- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
java传输层两大协议
一、TCP(传输控制协议)
1.特性
-面向连接:在传输数据之前,需要在发送端和接收端之间建立一条可靠的连接。这一过程通过“三次握手”来完成,确保双方都做好了传输数据的准备。例如,客户端向服务器发送SYN包,服务器收到后回复SYN+ACK包,客户端再发送ACK包,三次握手成功后连接建立。
-可靠传输:TCP提供了可靠的数据传输。它通过确认机制、重传机制和滑动窗口机制来保证数据的完整性和顺序性。发送方发送数据后,会等待接收方的确认信息,如果在规定时间内没有收到确认,就会重传数据。滑动窗口机制则允许发送方在未收到全部确认的情况下,继续发送一定数量的数据,提高了传输效率。
-全双工通信:允许通信双方在同一时间进行数据的发送和接收。也就是说,在TCP连接上,双方都可以同时作为发送方和接收方,极大地提高了通信效率。
-拥塞控制:能够自动调整发送方的发送速率,以避免网络拥塞。当网络出现拥塞时,TCP会降低发送速率,减少网络流量;当网络状况好转时,又会逐渐提高发送速率。
2.Java中的应用
在Java中,通过`java.net.Socket`类和`java.net.ServerSocket`类来使用TCP协议进行网络通信。例如,创建一个简单的TCP服务器:
```java
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassTCPServer{
publicstaticvoidmain(String[]args){
try(ServerSocketserverSocket=newServerSocket(8080)){
System.out.println(Serverstartedonport8080);
while(true){
try(SocketclientSocket=serverSocket.accept();
PrintWriterout=newPrintWriter(clientSocket.getOutputStream(),true);
BufferedReaderin=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()))){
StringinputLine;
while((inputLine=in.readLine())!=null){
System.out.println(Received:+inputLine);
out.println(Echo:+inputLine);
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
```
创建一个TCP客户端:
```java
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.Socket;
importjava.net.UnknownHostException;
publicclassTCPClient{
publicstaticvoidmain(String[]args
文档评论(0)