本实例实现了多客户端运行并进行聊天的功能 服务端聊天效果为: 客户端聊天效果: 服务器端代码:

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实现多客户端聊天相关推荐

  1. java Socket实现简单在线聊天(二)

    出处:http://blog.csdn.net/tuzongxun 接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使 ...

  2. java socket多人聊天室_如何运用Java socket实现多人聊天室功能

    如何运用Java socket实现多人聊天室功能 导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构 ...

  3. java socket多人聊天_如何运用Java socket实现多人聊天室功能

    导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构: ChatClient: package com ...

  4. Java Socket服务器端与客户端的编程步骤总结

    一,InetAddress类: InetAddress类没有构造方法,所以不能直接new出一个对象: 可以通过InetAddress类的静态方法获得InetAddress的对象: InetAddres ...

  5. JAVA SOCKET 服务端/客户端可随时从任意一方发消息的例子

    网上找到不少例子都是必须客户端先发送一个消息,服务端再回复一条消息.这样的方式对于服务端想主动发送消息给客户端就很不方便了. 研究了一下,发现主要是因为BufferedReader的时候用readli ...

  6. java socket同步通信,javasocket客户端与服务端同步通信实例

    javasocket客户端与服务端同步通信实例 工作中没涉及有关JA V A SOCKET编程的实际经历,但理论大概了解.想正明一下自已的对JA V A SOCKET理解写个通信TEST,通过TEST ...

  7. 简单java socket_基于Java Socket实现一个简易在线聊天功能(一)

    最近做了一个项目,其中有一个在线网页交流的需求,好久没写代码了,手都生疏了,于是先写demo练练手,分享到脚本之家平台,以此做个记录,方便自己和大家使用. 先给大家说下实现步骤分这样几大步: 1.使用 ...

  8. 网页版在线聊天java Socket实现

    注:本文引用地址http://www.jb51.net/article/84689.htm 本文为大家分享了一个满足在线网页交流需求的实例,由于java Socket实现的网页版在线聊天功能,供大家参 ...

  9. Java Socket实现简易多人聊天室传输聊天内容或文件

    Java Socket实现简易多人聊天室传输聊天内容或文件 Java小练手项目:用Java Socket实现多人聊天室,聊天室功能包括传输聊天内容或者文件.相比于其它的聊天室,增加了传输文件的功能供参 ...

最新文章

  1. 关于何种情况下使用DataGrid、DataList或Repeater的一些讨论
  2. Spring源码分析【5】-Spring MVC处理流程
  3. R假设检验之Durbin-Watson检验(Durbin-Watson Test)
  4. python是什么时候发布的_python发布日期
  5. Delphi写的等待进程运行结束函数
  6. jquery 获取 id ,但是id 里面不能有. 这个符号
  7. vi/vim使用教程
  8. .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)
  9. 梯度下降法优化目标函数_如何通过3个简单的步骤区分梯度下降目标函数
  10. 数据库支持的数据类型
  11. c语言飞扬的小鸟程序,C语言实现flappy bird游戏
  12. MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
  13. ubuntu 搭建 php 环境
  14. mac 黑窗口连接mysql_macOS -- Mac系统如何通过终端使用mysql
  15. 通用的流氓软件手动清理方法
  16. 如何修改开机背光亮度
  17. 百词斩不复习_不背单词,墨墨背单词和百词斩哪个好啊?
  18. 【支付宝商家中心】支付功能签约,产品签约失败;修改经营类目;系统检测到您的账户不符合国家相关法律法规或《支付宝用户服务协议》约定
  19. 《欧洲文学名著导读》——读书笔记
  20. 创建跨账户IAM角色访问(Creating Cross-Account IAM Roles)

热门文章

  1. hubliderx如选择相同单词_高考英语,十六种高效单词记忆法,建议人手一份!
  2. java为什么被开发者_为什么开发者对Java 9如此的兴奋
  3. php 微信定位,微信企业号(服务号)坐标定位发生偏移解决方案记录( 附PHP代码)...
  4. pandas数据处理分组聚合
  5. spring3.2 aop 搭建 (1)
  6. 如何缩短visual studio行号的距离
  7. linux 进程通信之 mmap
  8. 关于luci的几个问题一
  9. 《剑指offer》链表中倒数第k个结点
  10. java图像处理,拷贝图像EXIF信息