Java Socket通信

Rate this post

Socket通常被称为套接字,其是应用层和传输层之间的一个抽象层,它使用TCP协议,通过网络的通信信道进行通信。下面,我将介绍其在java中的Socket通信

Java提供ServerSocketSocket类实现TCP Socket通信。ServerSocket类提供TCP连接服务,Socket类提供进行通信的Socket对象。

一个实现Socket通信的网络应用程序,由一个服务器端程序和一个客户端程序组成。服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户的连接请求。客户程序根据服务器程序所在的主机名端口号发出连接请求。服务器端和客户端分别创建字节输入流和字节输出流,通过字节输入流获得对方发来的数据,通过字节输出流向对方发送数据;当一方决定结束通信时,向对方发送结束信息;另一方收到结束信息后,双方分别关闭各自的TCP连接。

Socket通信程序的四个基本步骤:

1、建立Socket连接,在客户方和服务器方创建Socket/ServerSocket。

2、打开连接到Socket的输入/输出流。

3、利用输入/输出流,按照一定的协议对Socket进行读/写操作。

4、关闭输入/输出流和Socket。

如下图所示:

socket通信过程

一, 建立socket连接:

在服务器端:

try{

ServerSocket server = new ServerSocket(4444);    //4444为端口号

}catch(IOException e){

}

Socket socket = null;

try{

socket = server.accept();  //等待客户端连接

}catch(IOException e){

}

在客服端:

try{

Socket client = new Socket(127.0.0.1, 4444);  //服务器地址和端口号

}catch(IOException e){

}

二, 打开输入/输出流:

Socket类提供了方法getInputStream()和getOutputStream()来得到Socket对应的输入/输出流以进行数据读写操作,它们分别返回InputStream对象和OutputStream对象。

BufferedReader in= new BufferedReader(new InputStreamReader( client.getInputStream()));

PrintStream out= new PrintStream( client.getOutputStream()));

以上给出的是client端socket的输入输出流的获取,服务器端以上述类同。

三, 利用输入/输出流进行读写操作:

String x = in.readLine(); //获取(读入)数据

out.println(“HELLO WORLD”); //发送数据

四, 关闭输入/输出流和socket

in.close();     //关闭输入流

out.close();    //关闭输出流

client.close();  //关闭socket

 

 

Leave a Reply