Java socket通信服务器代码编写大全("Java Socket通信服务器编程全攻略")

原创
ithorizon 6个月前 (10-19) 阅读数 37 #后端开发

Java Socket通信服务器编程全攻略

一、Java Socket通信基础

Java Socket通信是Java网络编程的基础,首要涉及到TCP/IP协议和UDP协议。Socket可以看作是网络上两个程序间通信的端点,通过Socket可以实现数据的传输。

二、Socket通信原理

Socket通信分为客户端(Client)和服务器端(Server)。客户端发送请求,服务器端接收请求并响应。以下是Socket通信的基本原理:

  • 客户端创建Socket对象,指定服务器的IP地址和端口号。
  • 服务器端创建ServerSocket对象,绑定端口号并监听。
  • 客户端向服务器端发送连接请求。
  • 服务器端接收客户端的连接请求,创建Socket对象。
  • 客户端和服务器端通过Socket对象进行数据传输。
  • 传输完成后,双方关闭Socket连接。

三、Java Socket编程步骤

以下是Java Socket编程的基本步骤:

  1. 创建ServerSocket对象,绑定端口号。
  2. 监听客户端连接请求。
  3. 接收客户端连接请求,创建Socket对象。
  4. 获取输入流和输出流。
  5. 读写数据。
  6. 关闭Socket连接。

四、Java Socket服务器端代码示例

以下是一个明了的Java Socket服务器端代码示例:

import java.io.*;

import java.net.*;

public class Server {

public static void main(String[] args) {

try {

// 创建ServerSocket对象,绑定端口号

ServerSocket serverSocket = new ServerSocket(12345);

// 监听客户端连接请求

System.out.println("服务器已启动,等待客户端连接...");

Socket socket = serverSocket.accept();

// 接收客户端连接请求,创建Socket对象

System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());

// 获取输入流和输出流

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);

// 读写数据

String line;

while ((line = bufferedReader.readLine()) != null) {

System.out.println("客户端发送的消息:" + line);

printWriter.println("服务器已接收到消息:" + line);

}

// 关闭Socket连接

socket.close();

serverSocket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

五、Java Socket客户端代码示例

以下是一个明了的Java Socket客户端代码示例:

import java.io.*;

import java.net.*;

public class Client {

public static void main(String[] args) {

try {

// 创建Socket对象,指定服务器的IP地址和端口号

Socket socket = new Socket("127.0.0.1", 12345);

// 获取输入流和输出流

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);

// 读写数据

String line;

while ((line = bufferedReader.readLine()) != null) {

printWriter.println(line);

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

System.out.println("服务器回复:" + reader.readLine());

}

// 关闭Socket连接

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

六、多线程Socket服务器

在实际应用中,服务器需要同时处理多个客户端的请求。为此,我们可以使用多线程来实现。以下是一个明了的多线程Socket服务器代码示例:

import java.io.*;

import java.net.*;

import java.util.concurrent.*;

public class MultiThreadServer {

private static final int PORT = 12345;

private static final int MAX_THREADS = 10;

public static void main(String[] args) {

ExecutorService executorService = Executors.newFixedThreadPool(MAX_THREADS);

try {

// 创建ServerSocket对象,绑定端口号

ServerSocket serverSocket = new ServerSocket(PORT);

// 监听客户端连接请求

System.out.println("多线程服务器已启动,等待客户端连接...");

while (true) {

// 接收客户端连接请求,创建Socket对象

Socket socket = serverSocket.accept();

// 创建线程处理客户端请求

executorService.execute(new ClientHandler(socket));

}

} catch (IOException e) {

e.printStackTrace();

}

}

private static class ClientHandler implements Runnable {

private Socket socket;

public ClientHandler(Socket socket) {

this.socket = socket;

}

@Override

public void run() {

try {

// 获取输入流和输出流

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);

// 读写数据

String line;

while ((line = bufferedReader.readLine()) != null) {

System.out.println("客户端发送的消息:" + line);

printWriter.println("服务器已接收到消息:" + line);

}

// 关闭Socket连接

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

七、总结

本文介绍了Java Socket通信服务器编程的基本概念、原理和步骤,并通过示例代码展示了怎样实现明了的Socket通信和多线程Socket服务器。在实际应用中,还需要考虑异常处理、数据加密、性能优化等方面的问题。掌握Java Socket编程,有助于更好地懂得和应用网络编程技术。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门