300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java TCP 实现聊天室功能 多线程实现一个服务器端和多个客户端之间的聊天

java TCP 实现聊天室功能 多线程实现一个服务器端和多个客户端之间的聊天

时间:2020-01-03 02:13:20

相关推荐

java TCP 实现聊天室功能 多线程实现一个服务器端和多个客户端之间的聊天

package 实验702;import .Socket;public class Client {public static void main(String[] args) {Socket socket;try {socket = new Socket("127.0.0.1", 8081);System.out.println("欢迎进入聊天室");new ReceiveThread(socket).start();new SendThread(socket).start();} catch (Exception e) {e.printStackTrace();}}}

package 实验702;import java.io.BufferedReader;import java.io.InputStreamReader;import .Socket;public class ReceiveThread extends Thread {private Socket socket;public ReceiveThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));String ans = "";while (true) {ans = in.readLine();if ("end".equals(ans)) {break;}System.out.println(ans);}in.close();socket.close();} catch (Exception e) {e.printStackTrace();}}}

package 实验702;import java.io.PrintWriter;import .Socket;import java.util.Scanner;public class SendThread extends Thread {private Socket socket;public SendThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {PrintWriter out = new PrintWriter(socket.getOutputStream(), true);Scanner sc = new Scanner(System.in);String ans = "";while (true) {ans = sc.nextLine();out.println(ans);if ("end".equals(ans)) {break;}}sc.close();} catch (Exception e) {e.printStackTrace();}}}

package 实验702;import .ServerSocket;import .Socket;public class Server {public static void main(String[] args) {try {ServerSocket server = new ServerSocket(8081);while (true) {Socket socket = server.accept();ServerThread serverThread = new ServerThread(socket);serverThread.start();}} catch(Exception e) {e.printStackTrace();}}}

package 实验702;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import .Socket;import java.util.ArrayList;import java.util.List;public class ServerThread extends Thread{private static List<Socket> socketList = new ArrayList<>();private Socket socket;public ServerThread(Socket socket) {super("客户端" + (socketList.size() + 1));this.socket = socket;socketList.add(socket);System.out.println(getName() + "进入聊天室");}@Overridepublic void run() {try {PrintWriter out = null;BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));String ans;while (true) {ans = in.readLine();System.out.println(getName() + ":" + ans);// 向其他用户转发for (Socket socket : socketList) {if (!this.socket.equals(socket)) {out = new PrintWriter(socket.getOutputStream(), true);out.println(getName() + ":" + ans);}}// 输入end退出聊天室if ("end".equals(ans)) {// 服务器回复结束信号out = new PrintWriter(socket.getOutputStream(), true);out.println("end");System.out.println(getName() + ":" + "退出聊天室");// 在socket列表中删除socketList.remove(this.socket);break;}}in.close();out.close();socket.close();} catch (Exception e) {e.printStackTrace();}}}

欢迎进入聊天室我是客户端1客户端2:我是客户端2客户端3:我是客户端3end欢迎进入聊天室我是客户端2客户端3:我是客户端3客户端1:endend欢迎进入聊天室我是客户端3客户端1:end客户端2:endend客户端1进入聊天室客户端1:我是客户端1客户端2进入聊天室客户端2:我是客户端2客户端3进入聊天室客户端3:我是客户端3客户端1:end客户端1:退出聊天室客户端2:end客户端2:退出聊天室客户端3:end客户端3:退出聊天室

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。