TCP和UDP的异同点知识总结

相同点:TCP和UDP都是传输层的协议

不同点:
1.UDP是面向报文的,发送端发啥,接收端就收啥
TCP是面向流的,肯定能发过去,但是不是一次性都发过去,可能是分批次发的,(就像一车一车拉货),这就需要提前约定怎么就知道一句话发完了,需要自己设定,比如遇到\r\n代表一句话收完了

2.TCP是面向连接的, 必须调用connect,建立连接
UDP是无连接的,, 么有调过connect

3.UDP不可靠,只管发,发了对方收到不收到不管
TCP是可靠的,发了对方能收到,收不到我也知道

但是,可靠性是需要付出成本的,有时候不需要那么可靠,比如视频聊天就可以使用UDP,卡一下也没关系,不影响使用

如何写一个UDP服务器?
1) 创界一个UDP socket (DatagramSocket)

DatagramSocket udpServerSocket=new DatagramSocket(8080);

2)循环
-----------a.等待对方发送UDP报文

udpServerSocket.receive(receivePacket);

---------- b.回复对方一个UDP报文

udpServerSocket.send(sendPacket);

如何写一个UDP客户端?
1)创界一个UDP socket (DatagramSocket)

DatagramSocket udpClientSocket=new DatagramSocket();

2)循环
---------- a.往Server 端口发送UDP报文

udpClientSocket.send(sendPacket);

-----------b.等待对方回复

udpClientSocket.receive(receivePacket);

如何写一个TCP服务器?
1)创建一个socket并绑定

ServerSocket tcpServerSocket=new ServerSocket(9898);

2)循环
----------a.等待客户端连接上来

Socket clientSocket=tcpServerSocket.accept();

----------b.把该客户端的处理工作交给线程池去处理

pool.execute(new TalkRunnable(clientSocket);

线程池处理:1.把输入流和输出流都转成合适的字符流

2.等待对方的输入,直到一个特殊字符位置(\r\n)

String line=reader.readLine();

3.回复对方消息

out.println(response);
out.flush();
TCP要了解  线程池  和  短连接  这两种处理方式                                                               

你可能感兴趣的:(JavaWeb)