TCP之Eclipse控制台的群聊
来源:互联网 发布:凯文.米特尼克 知乎 编辑:程序博客网 时间:2024/05/16 15:39
1、服务端的主线程通过List存储每个客户端传过来的Socket。
子线程接收客户端传来的消息,通过遍历List把某一个传过来的消息发送给所有的客户端,实现群聊功能。
2、客户端主线程实现从控制台发送消息
子线程实现接收客户端发来的消息,显示在控制台即可
服务端
public class Server { public static void main(String[] args) { try { ServerSocket ss=new ServerSocket(9999); List<Socket> li=new ArrayList<>(); while(true){ Socket s=ss.accept(); System.out.println("连接成功"); li.add(s); new SThread(s, li).start(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}class SThread extends Thread{ private Socket s; private List<Socket> li; public SThread(Socket s, List<Socket> li) { super(); this.s = s; this.li = li; } public void run() { try { BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); while(true){ String SString=br.readLine(); for(Socket s1:li){ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s1.getOutputStream())); bw.write(SString); bw.newLine(); bw.flush(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
客户端:
public class Client { public static void main(String[] args) { try { Socket s=new Socket("127.0.0.1",9999); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); while(true){ new CThread(s).start(); String Scli=br.readLine(); bw.write(Scli); bw.newLine(); bw.flush(); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}class CThread extends Thread{ //读取服务端消息 private Socket s; public CThread(Socket s) { super(); this.s = s; } @Override public void run() { try { BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); while(true){ String Sse=br.readLine(); System.out.println("服务器发来消息:"+Sse); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
0 0
- TCP之Eclipse控制台的群聊
- Eclipse 的控制台console乱码
- 关闭eclipse控制台的跳出
- Eclipse 控制台
- eclipse之OSGi控制台在Eclipse插件开发中的妙用
- Eclipse的控制台console经常的跳出
- eclipse控制台无法输出的问题
- 关于 Eclipse CDT 控制台的问题
- eclipse的conosle参数,开启osgi控制台
- eclipse中修改控制台的编码格式
- 保存Eclipse控制台输出的内容
- 关于eclipse控制台输入的问题
- 保存Eclipse控制台输出的内容
- 关闭Eclipse的控制台console自动跳出
- mac下调整eclipse控制台的编码
- Eclipse控制台键盘输入乱码问题的解决
- Eclipse控制台输出信息的控制
- 关闭Eclipse的控制台console自动跳出
- TensorFlow与TensorLayer教程[精选][转]
- 5-6 列出连通集 (25分)
- SqLite数据库MVC模式
- Playground中格式注释语法
- Vagrant使用指南:Vagrant第一个Helloworld例子
- TCP之Eclipse控制台的群聊
- http://bailian.openjudge.cn/practice/2694/2694:逆波兰表达式 题解
- gtest入口代码示例
- C++11 常用特性
- Win10语言包下载
- 5-7 六度空间 (30分)
- Kubernetes1.3:POD生命周期管理
- 5-8 哈利·波特的考试 (25分)
- Android热补丁技术