c 视频网站开发入门免费建自己域名的网站吗
Socket 是实现网络通信的一种机制,它允许在不同主机之间的进程通过网络进行数据交换。下面我将简要介绍如何使用 Socket 实现客户端和服务器间的通信。
客户端-服务器通信步骤:
服务器端:
创建服务器端 Socket:
-  
服务器端通过创建一个
ServerSocket对象来监听指定的端口,等待客户端连接。 
ServerSocket serverSocket = new ServerSocket(portNumber); 
其中 portNumber 是服务器端监听的端口号。
接受客户端连接:
-  
一旦有客户端连接,
ServerSocket就会返回一个Socket对象,该对象代表了和客户端的通信通道。 
Socket clientSocket = serverSocket.accept(); 
这一步是阻塞操作,直到有客户端连接进来才会继续执行。
获取输入输出流:
-  
通过
Socket对象,可以获取输入流和输出流,进行数据的读写操作。 
InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream(); 
处理客户端请求:
-  
在获得了输入流之后,可以从中读取客户端发送的数据,并根据协议进行相应的处理。
 
关闭连接:
-  
处理完毕后,记得关闭
Socket和ServerSocket,释放资源。 
clientSocket.close();
serverSocket.close(); 
客户端:
创建客户端 Socket:
-  
客户端通过创建一个
Socket对象来连接到服务器的指定地址和端口。 
Socket socket = new Socket(serverAddress, portNumber); 
其中 serverAddress 是服务器的地址,portNumber 是服务器端监听的端口号。
获取输入输出流:
-  
通过
Socket对象,可以获取输入流和输出流,进行数据的读写操作。 
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream(); 
发送请求和接收响应:
-  
使用输出流向服务器发送数据,使用输入流从服务器接收数据。
 
关闭连接:
-  
处理完毕后,记得关闭
Socket,释放资源。 
socket.close(); 
示例代码:
服务器端代码:
import java.io.*;
import java.net.*;
public class Server {public static void main(String[] args) {int portNumber = 8088;
try (ServerSocket serverSocket = new ServerSocket(portNumber)) {System.out.println("Server listening on port " + portNumber);while (true) {Socket clientSocket = serverSocket.accept();System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());
// 获取输入流InputStream inputStream = clientSocket.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));// 读取客户端发送的数据String clientMessage = reader.readLine();System.out.println("Received from client: " + clientMessage);// 获取输出流OutputStream outputStream = clientSocket.getOutputStream();PrintWriter writer = new PrintWriter(outputStream, true);// 发送响应给客户端writer.println("Message received successfully!");// 关闭连接clientSocket.close();}} catch (IOException e) {e.printStackTrace();}}
} 
客户端代码:
import java.io.*;
import java.net.*;
public class Client {public static void main(String[] args) {String serverAddress = "127.0.0.1";int portNumber = 12345;
try (Socket socket = new Socket(serverAddress, portNumber)) {System.out.println("Connected to server at " + serverAddress + ":" + portNumber);// 获取输出流OutputStream outputStream = socket.getOutputStream();PrintWriter writer = new PrintWriter(outputStream, true);// 发送数据给服务器writer.println("Hello from client!");// 获取输入流InputStream inputStream = socket.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));// 读取服务器响应String serverResponse = reader.readLine();System.out.println("Server response: " + serverResponse);} catch (IOException e) {e.printStackTrace();}}
} 
