java基于线程socket简单聊天室案例.docx
文本预览下载声明
服务端:package com.swing;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.Iterator;public class VerySimpleChatServer { ArrayList clientOutputStream; public class ClientHandle implements Runnable{ BufferedReader reader; Socket sock; public ClientHandle(Socket clientSocket){ try { sock = clientSocket; InputStreamReader isReader; isReader = new InputStreamReader(sock.getInputStream()); reader = new BufferedReader(isReader); } catch (Exception e) { e.printStackTrace(); } } public void run() { String message; try { while((message = reader.readLine()) != null){ System.out.println(read + message); tellEveryone(message); } } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { new VerySimpleChatServer().go(); } public void go(){ clientOutputStream = new ArrayList(); try { ServerSocket serverSocket = new ServerSocket(5000); while(true){ Socket clientSocket = serverSocket.accept(); PrintWriter writer = new PrintWriter(clientSocket.getOutputStream()); clientOutputStream.add(writer); Thread t = new Thread(new ClientHandle(clientSocket)); t.start(); System.out.println(got a connection); } } catch (Exception e) { e.printStackTrace(); } } public void tellEveryone(String message){ Iterator it = clientOutputStream.iterator(); while(it.hasNext()){ PrintWriter writer = (PrintWriter) it.next(); writer.println(message); writer.flush(); } } }客户端:package com.swing;import java.awt.BorderLayout;import java.awt.event.*;import java.io.*;import java.net.*;import javax.swing.*;public class SimpleChatClientA { JTextArea incoming; JTextField outgoing; PrintWriter writer; Socket sock; BufferedReader reader; public void go(){ JFrame frame = new JFrame(Ludicrously Simple Chat Client); JPanel mainPanel = new JPanel(); i
显示全部