JAVA Socket实现多客户端聊天
本实例实现了多客户端运行并进行聊天的功能 服务端聊天效果为: 客户端聊天效果: 服务器端代码:
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;public class MyServer { private ServerSocket ss = null; private Boolean isConnected = false; private ChatThread chatThread[]; private int maxClient = 10; private int clientNum = 0;public MyServer() {}public static void main(String[] args) { new MyServer().startServer(); }private void startServer() { try { ss = new ServerSocket(8888, maxClient); isConnected = true; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }if (isConnected) { System.out.println("服務器上線了~"); } else { System.out.println("服務器沒上線~"); }if (isConnected) { chatThread = new ChatThread[maxClient]; for (int i = 0; i < maxClient; i++) { try { chatThread[i] = new ChatThread(ss.accept()); chatThread[i].start(); clientNum++; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }private class ChatThread extends Thread { private Socket socket = null; private String ip; private DataInputStream dis; private DataOutputStream dos;public ChatThread(Socket socket) { this.socket = socket; ip = socket.getInetAddress().toString(); ip = ip.replace("/", ""); System.out.println(ip + "上線了"); try { dis = new DataInputStream(socket.getInputStream()); dos = new DataOutputStream(socket.getOutputStream()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }public void run() {while (isConnected) { try { String message = dis.readUTF(); System.out.println(ip + "说:\n" + message); for (int i = 0; i < maxClient; i++) { if (chatThread[i] != null) { chatThread[i].dos.writeUTF(ip + "说:\n" + message); chatThread[i].dos.flush(); } } } catch (IOException e) { // TODO Auto-generated catch block // e.printStackTrace(); System.out.println(ip + "下线了"); break; } } } } }
客户端代码:
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner;import javax.swing.JOptionPane;public class Client { private Socket s = null; private OutputStream os; private InputStream is; private String str = null; private Boolean isConnected = false; private DataInputStream dis; private DataOutputStream dos;public static void main(String[] args) { new Client().StartClient(); } private void StartClient(){ try { s = new Socket("192.168.1.100", 8888); isConnected = true; System.out.println("連接到服務器了");dis = new DataInputStream(s.getInputStream()); dos = new DataOutputStream(s.getOutputStream());new ClientThread().start(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private class ClientThread extends Thread{ public void run() { while (isConnected) { try { str = JOptionPane.showInputDialog("请输入要說的話:"); if (str != null) { dos.writeUTF(str); }else{ s.close(); isConnected = false; } String message = dis.readUTF(); System.out.println(message); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
JAVA Socket实现多客户端聊天相关推荐
- java Socket实现简单在线聊天(二)
出处:http://blog.csdn.net/tuzongxun 接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使 ...
- java socket多人聊天室_如何运用Java socket实现多人聊天室功能
如何运用Java socket实现多人聊天室功能 导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构 ...
- java socket多人聊天_如何运用Java socket实现多人聊天室功能
导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构: ChatClient: package com ...
- Java Socket服务器端与客户端的编程步骤总结
一,InetAddress类: InetAddress类没有构造方法,所以不能直接new出一个对象: 可以通过InetAddress类的静态方法获得InetAddress的对象: InetAddres ...
- JAVA SOCKET 服务端/客户端可随时从任意一方发消息的例子
网上找到不少例子都是必须客户端先发送一个消息,服务端再回复一条消息.这样的方式对于服务端想主动发送消息给客户端就很不方便了. 研究了一下,发现主要是因为BufferedReader的时候用readli ...
- java socket同步通信,javasocket客户端与服务端同步通信实例
javasocket客户端与服务端同步通信实例 工作中没涉及有关JA V A SOCKET编程的实际经历,但理论大概了解.想正明一下自已的对JA V A SOCKET理解写个通信TEST,通过TEST ...
- 简单java socket_基于Java Socket实现一个简易在线聊天功能(一)
最近做了一个项目,其中有一个在线网页交流的需求,好久没写代码了,手都生疏了,于是先写demo练练手,分享到脚本之家平台,以此做个记录,方便自己和大家使用. 先给大家说下实现步骤分这样几大步: 1.使用 ...
- 网页版在线聊天java Socket实现
注:本文引用地址http://www.jb51.net/article/84689.htm 本文为大家分享了一个满足在线网页交流需求的实例,由于java Socket实现的网页版在线聊天功能,供大家参 ...
- Java Socket实现简易多人聊天室传输聊天内容或文件
Java Socket实现简易多人聊天室传输聊天内容或文件 Java小练手项目:用Java Socket实现多人聊天室,聊天室功能包括传输聊天内容或者文件.相比于其它的聊天室,增加了传输文件的功能供参 ...
最新文章
- 关于何种情况下使用DataGrid、DataList或Repeater的一些讨论
- Spring源码分析【5】-Spring MVC处理流程
- R假设检验之Durbin-Watson检验(Durbin-Watson Test)
- python是什么时候发布的_python发布日期
- Delphi写的等待进程运行结束函数
- jquery 获取 id ,但是id 里面不能有. 这个符号
- vi/vim使用教程
- .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)
- 梯度下降法优化目标函数_如何通过3个简单的步骤区分梯度下降目标函数
- 数据库支持的数据类型
- c语言飞扬的小鸟程序,C语言实现flappy bird游戏
- MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
- ubuntu 搭建 php 环境
- mac 黑窗口连接mysql_macOS -- Mac系统如何通过终端使用mysql
- 通用的流氓软件手动清理方法
- 如何修改开机背光亮度
- 百词斩不复习_不背单词,墨墨背单词和百词斩哪个好啊?
- 【支付宝商家中心】支付功能签约,产品签约失败;修改经营类目;系统检测到您的账户不符合国家相关法律法规或《支付宝用户服务协议》约定
- 《欧洲文学名著导读》——读书笔记
- 创建跨账户IAM角色访问(Creating Cross-Account IAM Roles)
热门文章
- hubliderx如选择相同单词_高考英语,十六种高效单词记忆法,建议人手一份!
- java为什么被开发者_为什么开发者对Java 9如此的兴奋
- php 微信定位,微信企业号(服务号)坐标定位发生偏移解决方案记录( 附PHP代码)...
- pandas数据处理分组聚合
- spring3.2 aop 搭建 (1)
- 如何缩短visual studio行号的距离
- linux 进程通信之 mmap
- 关于luci的几个问题一
- 《剑指offer》链表中倒数第k个结点
- java图像处理,拷贝图像EXIF信息