socket学习(多线程聊天示例)
来源:互联网 发布:网络打鱼怎么举报 编辑:程序博客网 时间:2024/06/06 19:56
ThreadServer.java
import java.io.*; import java.net.*; /** * * @author heqichang * 服务端接收信息线程 * */ public class ThreadServer extends Thread{ Socket serverSocket; public void run() { try { BufferedReader br=new BufferedReader(new InputStreamReader(serverSocket.getInputStream())); String read=new String(); //接受客户端的姓名信息 String name=br.readLine(); //循环接受客户端信息 while(true) { read=br.readLine(); System.out.println(name+"说:"+read); if(read.equals("bye")) { break; } } br.close(); serverSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public ThreadServer(Socket server) { serverSocket=server; } }
ThreadSocketClient.java
import java.io.*; import java.net.*; /** * * * 客户端 * */ public class ThreadSocketClient extends Thread{ static Socket socket; public void run() { try { BufferedReader br2=new BufferedReader(new InputStreamReader(socket.getInputStream())); String read=new String(); //接受来自服务端的姓名信息 String name=br2.readLine(); //接受来自服务端的信息 while(true) { read=br2.readLine(); System.out.println(name+"说:"+read); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { socket=new Socket("127.0.0.1",9999); BufferedReader inputName=new BufferedReader(new InputStreamReader(System.in)); System.out.print("已连接上服务端,请输入你的姓名:"); String name=inputName.readLine(); //启动一个线程进行接收服务端信息 ThreadSocketClient thread=new ThreadSocketClient(); thread.start(); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw=new PrintWriter(socket.getOutputStream()); //发送给服务端客户端的姓名信息 pw.println(name); String info=new String(); //发送消息给服务端 while(!info.equals("bye")) { info=br.readLine(); pw.println(info); pw.flush(); } pw.close(); socket.close(); } }
ThreadSocketServer.java
import java.io.*; import java.net.*; import javax.swing.JOptionPane;/** * * @author bruceli * 服务端 * */ public class ThreadSocketServer extends Thread { Socket server; //保存服务端的姓名 static String name = new String(); public void run() { try { //启动一个线程来接收客户端信息 ThreadServer thread = new ThreadServer(server); thread.start(); BufferedReader br = new BufferedReader(new InputStreamReader( System.in)); PrintWriter pw = new PrintWriter(server.getOutputStream()); //第一次发送自己的姓名给客户端 pw.println(name); //循环发送信息给客户端 while (true) { String s = br.readLine(); pw.println(s); pw.flush(); } } catch (IOException e) { e.printStackTrace(); } } public ThreadSocketServer(Socket s) { this.server = s; } public static void main(String[] args) throws IOException { //绑定服务端在9999端口 ServerSocket server = new ServerSocket(9999); Socket socket; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("请输入您的姓名:"); name = br.readLine(); while (true) { //监听客户端程序 socket = server.accept(); //一个客户端连接后启动一个线程进行处理 ThreadSocketServer thread = new ThreadSocketServer(socket); thread.start(); JOptionPane.showMessageDialog(null,"有客户端连接到了9999端口"); } } }
执行效果:
0 0
- socket学习(多线程聊天示例)
- socket 简单聊天示例
- socket聊天程序(多线程,控制台)
- python聊天程序(socket+多线程)
- socket 实现多线程聊天
- socket一个多线程多客户端即时聊天学习
- perl socket 聊天程序示例
- 多线程socket编程--聊天程序
- 多线程socket编程--聊天程序
- 多线程socket编程--聊天程序
- 多线程socket编程--聊天程序
- Python Socket多线程示例
- socket编程示例(多线程)
- Java socket多线程示例
- 多线程实现socket()下的多人聊天实验
- 黑马程序员_.Net多线程Socket编程(对话聊天)
- java Socket多线程聊天程序(适合初学者)
- (二)Android socket+多线程 实现聊天功能
- MTT install related
- App架构经验总结
- 学习java需要的是耐心!
- 程序人生
- 搭建IIS7.0网站的经历
- socket学习(多线程聊天示例)
- ImageView里setImageResource出现OOM问题
- struts文件上传
- kaka-manager和kafka-offset-monitor的安装和使用
- php解决约瑟夫问题
- smarty模板引擎_3-预保留变量
- jquery 延迟触发控制 $.holdReady
- 文件存储
- Java已经开始影响这一代程序员