客户端与服务器端的搭建

1.1 TCP三次握手

1.第一次握手:客户端发送信息给服务器(服务器确定能接受信息)

2.第二次握手:服务器接收信息并回复客户端(客户端确定能接收,发送信息,服务器确定能接受信息)

3.第三次握手:客户端回复服务器端已接收信息(服务器确定能发送信息)

1.2 客户端搭建

1.创建Socket对象

//创建Socket对象,连接指定服务器(ip),端口(8888)
//127.0.0.1 本地IP  
Socket socket=new Socket("127.0.0.1","8888");
​

2.创建IO流(发送,接收数据)

//得到输入,输出流(字节流)
InputStream is=null;
OutputStream os=null;
is=socket.getInputStream();//接收数据
os=socket.getOutputStream();//发送数据

3.发送,接收数据

//发送数据
String str="你好,服务器";
os.write(str.getBytes());
//关流
socket.shutdownOutput();
//接收数据(字节流转换成字符流,便于读写操作)
BufferedReader br=new BufferedReader(new InputStreamReader(is));
//读取一行数据
String reply=br.readLine();
System.out.println("服务器端:"+reply);
socket.shutdownInput();
    

4.关闭资源

//关闭资源
br.close();
socket.close();

1.3服务器端搭建

1.创建ServerSocket,绑定客户端端口(1024之前端口不要使用,端口范围: 0~65535)

//服务器开启
ServerSocket serverSocket=new ServerSocket("8888");
//等待客户端请求后连接
Socket socket=serverSocket.accept();//未请求时阻塞

1.4使用多线程搭建服务器端

1.创建服务器端

ServerSocket serverSocket=new ServerSocket("8888");
while(true){
   //等待客户端请求后连接
Socket socket=serverSocket.accept();//未请求时阻塞
    //开启线程
    new TxtNovelThread(socket).start();
}

2.创建服务器端线程(未处理异常)

//1.创建一个socket对象,接收客户端请求
private Socket socket;
//2.创建一个有socket的构造方法,便于调用
public TxtNovelThread(Socket socket) {
        this.socket = socket;
    }
//3.重写run方法
 @Override
    public void run() {
    //所有IO流初始为null
    InputStream is = null;
    OutputStream os = null;
    BufferedReader br=null;
        
    is=socket.getInputStream();//接收数据
    os=socket.getOutputStream();//发送数据
        
     //接收客户端数据(字节流转换成字符流,便于读写操作)
    BufferedReader br=new BufferedReader(new InputStreamReader(is));
    //读取一行数据
    String reply=br.readLine();
    System.out.println("客户端:"+reply);
    socket.shutdownInput();
        
    //判断非空,关闭资源
    if(br!=null) br.close();
    if(socket!=null) socket.close();
    }
​

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值