1.服务器端
1.1 服务器启动入口:
package com.server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class MainServer {
public static ArrayList<Socket> socketList = new ArrayList<Socket>();
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(30000);
while (true) {
System.out.println("等待客户端的访问... ...");
Socket socket = serverSocket.accept();
socketList.add(socket);
new Thread(new ServerThread(socket)).start();
}
}
}
1.2 服务器线程:
package com.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ServerThread implements Runnable {
Socket socket = null;
BufferedReader bufferedReader = null;
public ServerThread(Socket socket) throws IOException {
this.socket = socket;
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
@Override
public void run() {
String content = null;
try {
while((content = readFromClient()) != null){
for (Socket socket:MainServer.socketList) {
PrintStream printStream = new PrintStream(socket.getOutputStream());
printStream.println("来自客户端:"+content);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private String readFromClient(){
try {
return bufferedReader.readLine();
} catch (IOException e) {
MainServer.socketList.remove(socket);
}
return null;
}
}
2.客户端
2.1 客户端主入口:
package com.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class MainClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket clientSocket = new Socket("127.0.0.1", 30000);
PrintStream printStream = new PrintStream(clientSocket.getOutputStream());
String line = null;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while ((line = bufferedReader.readLine()) != null) {
printStream.println(line);
}
}
}
2.2 客户端线程:
package com.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class ClientThread implements Runnable {
private Socket socket;
BufferedReader bufferedReader = null;
public ClientThread(Socket socket) throws IOException{
this.socket = socket;
bufferedReader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
}
@Override
public void run() {
String conString = null;
try {
while ((conString = bufferedReader.readLine()) != null) {
System.out.println("来自服务器的广播:"+conString);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
socket实现的C/S的简单聊天器,实现了基本聊天室功能,同时实现截屏,文件传输,字体颜色设置等功能(附:运行截图 和 相关文档)
java多线程基于socket的简易聊天室源代码,Java的简单的四个类通过socket和多线程实现聊天,Java的简单的四个类通过socket和多线程实现聊天
用java语言 Socket Thread 实现的 聊天室 例子。分为Server、Client端,先运行Server,再运行Client
本课题设计主要是采用传统的Client/Server结构来实现自己的聊天室。其实现的主要功能是:用户可以在聊天室中公开发言,也可以发送给某个用户实现两人间的私聊。程序有着自己的聊天服务器和客户端程序。客户端提供...
使用java编写的类似聊天室的程序,在上次的基础上继续改进,将服务器端的IP地址写在配置文件里面,是程序的使用更加灵活,server.properties文件为配置文件,修改里面的ip地址为服务器端运行的ip地址即可使用。...
java socket编程 多人聊天室。一个服务端,多个客户端可进行聊天
简单的聊天程序,可以开多个窗口,初学者可以来看看
本代码运用了Java的socket网络编程技术,diamagnetic简单易懂,还添加了注释。适合初学者学习。
主要介绍了Java基于socket实现简易聊天室的方法,实例分析了java基于socket实现聊天室服务端与客户端的相关技巧,需要的朋友可以参考下
该程序为java+socket+swing+多线程实现的简易QQ聊天系统,可以实现群聊以及私聊的功能,私聊的格式为@用户1/2/3...:消息。
java+聊天室+简易+socket+thread
对Java 基于Socket的TCP编程的基本使用,包括客户端和服务端的接收和发送
用java开发的一个简单的聊天室,目前实现了一对多聊天、聊天记录和字体修改等功能,运行的时候先运行server再运行client即可。代码中也有相关注释,写的比较明白
java多线程聊天程序GUI界面socket实现.rar
自己编写的简单的java多人聊天室,只为复习java线程、网络以及swing。大致思路为每连接一个客户端,服务器为其新建一个线程与端口连接通信。基本功能没有问题,但是没有再多的细致的测试,有兴趣学习java线程、网络...
java 简易版QQ聊天 java源代码 简易版聊天室 Socket,ServeSocket,UDP聊天
java聊天室,主要实现群聊功能,使用tcp socket
该资源利用java语言编写的聊天室程序,有图形形截面,能够实现登录,注册功能,同时能进行聊天。通过服务器端可以删除用户。。。
Android简易聊天室源代码(基本实现了聊天室的功能,包括好友列表,信息列表,Android相关数据库,Socket编程以及java端sqlite数据库的使用):
1、java socket 2、UDP传输协议 3、json数据格式 4、简易聊天室程序实现