推销网站建设,今天重大新闻文字,南昌市建设局官方网站,微网站幻灯片尺寸目录
案例要求#xff1a;
实现思路#xff1a;
代码#xff1a;
User类#xff1a;用户端
Client类#xff1a;服务端
ServerReader类#xff1a;多线程通信类
总结#xff1a; 案例要求#xff1a; TCP通信下,正常的写法只能单个服务器和单个客户端进行通信
实现思路
代码
User类用户端
Client类服务端
ServerReader类多线程通信类
总结 案例要求 TCP通信下,正常的写法只能单个服务器和单个客户端进行通信那该怎么解决这个问题呢
实现思路
有客户端进行通信就创建一个线程即可,用多线程解决单通信问题
代码
User类用户端
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.*;
import java.util.Scanner;public class User {public static void main(String[] args) throws Exception {Socket socket new Socket(127.0.0.1, 8888);System.out.println(客户端启动);OutputStream out socket.getOutputStream();DataOutputStream dos new DataOutputStream(out);Scanner sc new Scanner(System.in);while (true) {System.out.println(请说:);String msg sc.nextLine();if(msg.equals(exit)){dos.close();socket.close();break;}dos.writeUTF(msg);}}
}Client类服务端
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;public class Client {public static void main(String[] args) throws Exception{System.out.println(服务端启动了...);ServerSocket serverSocket new ServerSocket(8888);Socket socket null;while (true) {socket serverSocket.accept();System.out.println(一个客户端上线了:socket.getInetAddress().getHostAddress());new ServerReader(socket).start();}}
}ServerReader类多线程通信类
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;public class ServerReader extends Thread{private Socket socket;public ServerReader(Socket socket) {this.socket socket;}Overridepublic void run() {try {InputStream in socket.getInputStream() ;DataInputStream dis new DataInputStream(in);while (true) {String msgdis.readUTF();System.out.println(收到用户端的消息:msg);String ipsocket.getInetAddress().getHostAddress();String portsocket.getPort();System.out.println(ip:ip port:port);}} catch (Exception e) {System.out.println(一个客户端下线了socket.getInetAddress().getHostAddress());}}
}总结 摘要本文介绍了使用多线程解决TCP单通信问题的方案。通过创建User类作为客户端Client类作为服务端主程序以及ServerReader类作为多线程处理类实现了服务端同时处理多个客户端连接。当新客户端连接时服务端会为每个连接创建独立线程来处理通信从而突破单客户端限制。该方案有效解决了传统TCP通信中服务端只能处理单个连接的问题实现了多客户端并发通信的功能。