使用telnet作为客户端程序程序服务器程序
telnet 192.168.1.104 8001
telnet 设置 set localecho 回显
需要使用BuffererRead类输出客户端发送的数据,不然打出一个字母点击回车就结束了连接
TcpServer.java
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer{
public static void main(String[] args) throws Exception{
ServerSocket ss=new ServerSocket(8001);//创建一个ServerSocket对象,端口使用8001监听
Socket s=ss.accept();//使用ServerSocket实例化的ss服务器对象的accpet方法等待客户机来连接,如果有客户机连接accpet会返回一个Socket类的对象已经建立了专线连接,如果没有连接会一直阻塞,后面的程序不会运行
InputStream ips=s.getInputStream();//返回一个输入流对象
OutputStream ops=s.getOutputStream();//返回一个输出流对象
ops.write("welcome to jianhaozhan.cn".getBytes());//当客户端连接上服务器,服务器向客户端写入欢迎信息
/*
byte[] buf=new byte[1024];//服务器读取的数据存放在buf字节数组中
int len=ips.read(buf);//ips读取对象已经读取的数据通过read()方法读出来存放到buf字节数组中,read方法返回实际读取的字节个数的int类型
System.out.println(new String(buf,0,len));
*/
BufferedReader br=new BufferedReader(new InputStreamReader(ips));//BufferedReader只能包装Reader,Reader可以包装字节流,最终目的存放到内存的一个缓冲区使用,现在数据已经存放到了BufferedRead对象br中
System.out.println(br.readLine());//使用BufferedRead对象的readLine方法读出数据
br.close();//关闭Buufer对象就关闭了字节对象
//ips.close();//输入流对象关闭
ops.close();//输出流对象关闭
s.close();//关闭单独客户对象
ss.close();//关闭ServerSocket对象
}
}