TCP和UDP的异同点知识总结
相同点:TCP和UDP都是传输层的协议
不同点: 1.UDP是面向报文的,发送端发啥,接收端就收啥 TCP是面向流的,肯定能发过去,但是不是一次性都发过去,可能是分批次发的,(就像一车一车拉货),这就需要提前约定怎么就知道一句话发完了,需要自己设定,比如遇到 代表一句话收完了
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.等待对方的输入,直到一个特殊字符位置( )
String line=reader.readLine();
3.回复对方消息
out.println(response); out.flush();
TCP要了解 线程池 和 短连接 这两种处理方式
上一篇:
IDEA上Java项目控制台中文乱码