JAVA Socket 底层是怎样基于TCPIP 实现的

JAVA Socket 底层是怎样基于TCPIP 实现的,第1张

首先必须明确:TCP/IP模型中有四层结构: 应用层(Application Layer)、传输层(Transport Layer)、网络层(Internet Layer
)、链路层(LinkLayer)
其中Ip协议(Internet
Protocol)是位于网络层的,TCP协议时位于传输层的。通过Ip协议可以使可以使两台计算机使用同一种语言,从而允许Internet上连接不同类型的计算机和不同 *** 作系统的网络。Ip协议只保证计算机能够接收和发送分组数据。当计算机要和远程的计算机建立连接时,TCP协议会让他们建立连接:用于发送和接收数据的虚拟电路。
套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA
有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包,即ServerSocket不能接收实际的数据包。
套接字是基于TCP/IP实现的,它是用来提供一个访问TCP的服务接口,或者说套接字socket是TCP的应用编程接口API,通过它应用层就可以访问TCP提供的服务。
在JAVA中,我们用 ServerSocket、Socket类创建一个套接字连接,从套接字得到的结果是一个InputStream以及OutputStream对象,以便将连接作为一个IO流对象对待。通过IO流可以从流中读取数据或者写数据到流中,读写IO流会有异常IOException产生。

以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码:
/
TCPServer
/
import javaio;
import javanet;
class TCPServer{
public static void main(String[] args)throws IOException{
ServerSocket listen = new ServerSocket(5050);

Socket server = listenaccept();
InputStream in = servergetInputStream();
OutputStream out = servergetOutputStream();
char c = (char)inread();
Systemoutprintln("收到:" + c);
outwrite('s');

outclose();
inclose();
serverclose();
listenclose();
}
}
/
TCPClient
/
import javaio;
import javanet;
class TCPClient{
public static void main(String[] args)throws IOException{
Socket client = new Socket("127001" , 5050);
InputStream in = clientgetInputStream();
OutputStream out = clientgetOutputStream();

outwrite('c');
char c = (char)inread();
Systemoutprintln("收到:" + c);
outclose();
inclose();
clientclose();
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13457368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-10
下一篇 2023-08-10

发表评论

登录后才能评论

评论列表(0条)

保存