java socket实现多客户端群聊
来源:互联网 发布:淘宝小女孩布鞋 编辑:程序博客网 时间:2024/05/24 04:55
服务器端主要是接收客户端发送过来的信息,并将该信息发给所有的客户端
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.List;/** * */class Chat extends Thread {private Socket socket;private List<Socket> socketList;private int count;public Chat(int count, Socket socket, List<Socket> socketList) {this.count = count;this.socket = socket;this.socketList = socketList;}public void run() {BufferedReader reader = null;PrintWriter writer = null;try {reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));String message = null;while (true) {message = reader.readLine();// 接收到客户端的bye信息,客户端即将退出,并将bye写入到该客户端if (message.equals("bye")) {writer = new PrintWriter(socket.getOutputStream());writer.println("bye");writer.flush();continue;}// 向所有的客户端发送接收到信息,实现群聊for (int i = 0; i < socketList.size(); i++) {writer = new PrintWriter(socketList.get(i).getOutputStream());writer.println(count + " say: " + message);writer.flush();}}} catch (IOException e) {e.printStackTrace();}}}public class ChatServer {/** * Description * * @param args */public void startWork() throws IOException {ServerSocket serverSocket = new ServerSocket(2345);List<Socket> socketList = new ArrayList<Socket>();Socket socket = null;int count = 0;while (true) {socket = serverSocket.accept();count++;System.out.println(count + " clinet connected to the server!");// 将每一个连接到该服务器的客户端,加到List中socketList.add(socket);// 每一个连接到服务器的客户端,服务器开启一个新的线程来处理new Chat(count, socket, socketList).start();}}/** * Description * * @param args * @throws IOException */public static void main(String[] args) throws IOException {ChatServer chatServer = new ChatServer();chatServer.startWork();}}
客户端主要是两个类,一个是接收服务器端发送过来的信息,一个是向服务器发送客户端输入的信息
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;/** * 接受服务器信息 */class ReadMes extends Thread {private Socket socket;public ReadMes(Socket socket) {this.socket = socket;}public void run() {BufferedReader reader = null;try {reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));String message = null;while (true) {message = reader.readLine();// 当读服务器信息线程接收到bye,该线程退出if (message.equals("bye")) {break;}System.out.println(message);}} catch (IOException e) {e.printStackTrace();} finally {try {if (reader != null) {reader.close();}} catch (IOException e) {e.printStackTrace();}}}}/** * * 发送信息 */class SendMes extends Thread {private Socket socket;public SendMes(Socket socket) {this.socket = socket;}public void run() {BufferedReader input = null;PrintWriter writer = null;try {input = new BufferedReader(new InputStreamReader(System.in));writer = new PrintWriter(socket.getOutputStream());String message = null;while (true) {message = input.readLine();// 当输入bye客户端退出if (message.equals("bye")) {break;}// 向服务器端发送信息writer.println(message);writer.flush();}} catch (IOException e) {e.printStackTrace();} finally {if (input != null) {try {input.close();} catch (IOException e) {e.printStackTrace();}}if (writer != null) {writer.close();}}}}public class ChatClient {private String ipAdress;public ChatClient(String ipAString) {this.ipAdress = ipAdress;}public void startWork() throws UnknownHostException, IOException {Socket socket = new Socket(ipAdress, 2345);new ReadMes(socket).start();new SendMes(socket).start();}/** * Description * * @param args * @throws UnknownHostException * @throws IOException */public static void main(String[] args) throws UnknownHostException,IOException {ChatClient chatClient = new ChatClient(args[0]);chatClient.startWork();}}
0 0
- java socket实现多客户端群聊
- java socket实现多客户端群聊
- java socket实现多客户端群聊
- java socket实现多客户端群聊
- socket通信-服务端-客户端-实现多个客户端群聊
- JAVA Socket实现多客户端聊天
- JAVA SOCKET 实现 FTP 客户端
- java socket 实现FTP客户端
- java Socket编程--多线程实现为多个客户端服务
- Java 基于 TCP/IP 实现 Socket中的多客户端通信
- Java 基于 UDP 实现 Socket中的多客户端通信
- Java Socket实现多个客户端连接同一个服务端
- JAVA Socket 多线程实现多客户端的通信
- Java 基于 TCP/IP 实现 Socket中的多客户端通信
- Java 基于 UDP 实现 Socket中的多客户端通信
- Java 利用 Socket 实现服务器客户端聊天
- java--socket实现一个客户端像另一个客户端发送信息
- Java Socket编程 - 基于Socket实现HTTP下载客户端
- hdu1398 Square Coins 母函数
- linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)4 TCP SYN方式
- JQuery五:jQuery中.bind() .live() .delegate() .on()的区别
- 用phonegap+jquerymobile写天气预报(二)---初始化问题
- 坑爹的 xwiki 二次开发
- java socket实现多客户端群聊
- iphone 线程总结— detachNewThreadSelector的使用
- VC++6.0 GPS心得体会
- 《实用OpenCV》<二> 在你的电脑上配置OpenCV
- As的用法
- android中常用的弹出提示框
- PHP sprintf() 函数
- 养生保健,延年益寿---剖析互动能量杯的价值
- 功能链----责任链的变形