Java实现基于TCP协议网络Socket编程(C/S通信)攻略
什么是网络Socket编程?
网络socket编程就是通过Socket通信,在网络上完成通讯的过程。Socket通信是C/S架构中最常见和最为常用的一种通信方式。Socket通信要求通信的双方都存在一个程序,其中一个程序必须扮演客户端的角色,而另一个程序则扮演服务器的角色,客户端请求连接,服务器端等待连接请求并接受连接。Socket通信提供了一种底层的通信接口,使得程序员可以通过这种接口实现各种数据交互的模式。
何时需要网络Socket编程?
当需要在两个运行在不同计算机上的程序之间进行通信时,我们就可以使用网络Socket编程实现它。比如说,在互联网上,一个浏览器和一个Web服务器之间的通信,就是基于网络Socket编程实现的。
如何在Java中实现基于TCP协议网络Socket编程?
TCP协议提供可靠的、面向连接的数据传输服务,因此,要实现TCP连接,需要分为客户端和服务器端两种角色。
客户端实现
客户端首先要建立与服务器之间的连接,连接成功后,就可以进行数据的发送和接收了。以下是一个简单的Java客户端程序示例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class MyClient {
public static void main(String[] args) {
try {
//创建一个Socket对象,指定连接的服务器和端口
Socket socket = new Socket("127.0.0.1", 8888);
//获取输出流,向服务器发送数据
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
printWriter.println("Hello,Server!");
printWriter.flush();
//获取输入流,从服务器接收数据
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = bufferedReader.readLine();
System.out.println("Server: " + message);
//关闭所有流
printWriter.close();
bufferedReader.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器端实现
对于服务器端,它的主要任务是监听客户端的连接请求,并对客户端发起的请求进行处理。服务器端程序如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
try {
//创建一个ServerSocket对象,指定服务器的监听端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started, listening on port " + 8888);
while (true) {
//服务器等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("Client " + socket.getInetAddress() + " connected!");
//获取输入流,从客户端接收数据
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = bufferedReader.readLine();
System.out.println("Client: " + message);
//获取输出流,向客户端发送数据
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
printWriter.println("Hello,Client!");
printWriter.flush();
//关闭所有流
bufferedReader.close();
printWriter.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
示例说明
以上两个程序分别是TCP连接的客户端和服务器端实现,它们分别运行在不同计算机上,当客户端运行时,它会向指定的服务器建立连接,并向服务器发送一条消息;服务器端则监听指定端口的连接请求,并对接收到的消息进行处理,并向客户端发送一条消息。
在这个过程中,通过使用Socket、ServerSocket、 BufferedReader、PrintWriter等Java提供的类,我们轻易地实现了TCP连接,完成了两台计算机之间的通讯。从这个例子中我们可以看出,Java的网络编程可以帮助我们轻松地实现各种通讯方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现基于TCP协议网络socket编程(C/S通信) - Python技术站