Login
网站首页 > 文章中心 > 其它

tcp服务端和客户端_tcp服务端连接多个客户端

作者:小编 更新时间:2023-06-20 11:20:30 浏览量:131人看过

tcp服务端和客户端_tcp服务端连接多个客户端

软件介绍:以下是一个简单的 Java TCP 服务端和客户端代码示例,以及如何连接多个客户端:TCP 服务端代码:import java.io.BufferedReade...

以下是一个简单的 Java TCP 服务端和客户端代码示例,以及如何连接多个客户端:

TCP 服务端代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
    public static void main(String[] args) {
        try {
            // 创建一个 ServerSocket 对象并绑定到指定端口
            int port = 8888;
            ServerSocket serverSocket = new ServerSocket(port);
            
            System.out.println("Server started on port " + port);
            while (true) {
                // 接受客户端连接请求,创建一个 Socket 对象
                Socket clientSocket = serverSocket.accept();
                System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());
                // 创建输入输出流
                BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
                // 接收客户端发送的消息并回复
                String message = in.readLine();
                System.out.println("Received message from client: " + message);
                out.println("Hello, Client!");
                // 关闭输入输出流和套接字
                in.close();
                out.close();
                clientSocket.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在此示例中,我们创建了一个 ServerSocket 对象并使用 accept() 方法等待客户端连接。然后,我们创建一个新的线程来处理每个客户端请求。在各自线程的上下文中,我们使用 BufferedReader 和 PrintWriter 类来读取和写入数据。

TCP 客户端代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
    public static void main(String[] args) {
        try {
            // 创建一个套接字并连接到指定的主机和端口号
            String host = "localhost";
            int port = 8888;
            Socket socket = new Socket(host, port);
            
            System.out.println("Connected to server: " + host + ":" + port);
            // 创建输入输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            // 发送消息并接收回复
            String message = "Hello, Server!";
            out.println(message);
            System.out.println("Sent message to server: " + message);
            String response = in.readLine();
            System.out.println("Received message from server: " + response);
            // 关闭输入输出流和套接字
            in.close();
            out.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在此示例中,我们创建了一个 Socket 对象并使用 getInputStream() 和 getOutputStream() 方法来发送和接收数据。然后,我们使用 PrintWriter 类向服务器发送一条消息,并使用 BufferedReader 类读取从服务器返回的响应。

如何连接多个客户端?

要连接多个客户端,您需要将服务端代码稍加修改,使其能够同时处理多个客户端请求。这可以通过创建一个新的线程来处理每个客户端请求来完成。您可以参考以下示例代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
    public static void main(String[] args) {
        try {
            // 创建一个 ServerSocket 对象并绑定到指定端口
            int port = 8888;
            ServerSocket serverSocket = new ServerSocket(port);
            
            System.out.println("Server started on port " + port);
            while (true) {
                // 接受客户端连接请求,创建一个 Socket 对象
                Socket clientSocket = serverSocket.accept();
                System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());
                // 创建输入输出流
                BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
                // 使用新的线程来处理每个客户端请求
                Thread thread = new Thread(new ClientHandler(clientSocket, in, out));
                thread.start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class ClientHandler implements Runnable {
    private Socket clientSocket;


版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/other/496.html
<<上一篇 2023-06-20
下一篇 >> 2023-06-20

编辑推荐

热门文章