资源简介
没有可视化窗口,基于控制台输入的的聊天室,使用socket套接字和多线程完成在线聊天功能,支持私聊和群聊,功能简单请见谅。

代码片段和文件信息
package jdk.java.net.socket.chat;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
/**
*
* 客户端思路:
* 1.客户端与服务端建立连接
* 1)首先需要注册才能建立聊天功能
*
* 2.需要一个数据发送线程和数据接收线程
* 1)数据发送线程监控控制台输入
* 2)数据接收线程用户接收其它用户和服务端发送过来的消息
*
* @author ni.tf
* 2017-9-5
*/
public class ClientChat {
/**
* 同意字符集
*/
public static final String CHARSET = “UTF-8“;
/**
* 运行状态
*/
public static boolean isRunning = true;
private BufferedWriter writer;
private BufferedReader reader;
private BufferedReader in;
private Socket socket;
/**
* @param args
*/
public static void main(String[] args) {
new ClientChat().startup();
}
public ClientChat() {
try {
socket = new Socket(“127.0.0.1“ 8088);
writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream() CHARSET));
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream() CHARSET));
in = new BufferedReader(new InputStreamReader(System.in CHARSET));
} catch (UnsupportedEncodingException e) {
isRunning = false;
e.printStackTrace();
SocketUtil.close(writer reader in);
} catch (IOException e) {
isRunning = false;
e.printStackTrace();
SocketUtil.close(writer reader in);
}
}
/**
* 启动数据发送和接收线程
*/
public void startup(){
Sender sender = new Sender();
new Thread(sender).start();
Receiver receiver = new Receiver();
new Thread(receiver).start();
}
/**
* 发送线程
* 1.获取用户控制台输入信息
* 2.发送信息给服务端
* @author ni.tf
* 2017-9-1
*/
class Sender implements Runnable {
@Override
public void run() {
while(isRunning){
try {
String info = in.readLine();
if(info != null && !““.equals(info)){
writer.write(info);
writer.newLine();
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
isRunning = false;
e.printStackTrace();
SocketUtil.close(reader writer);
}
}
}
}
/**
* 接收线程
* @author ni.tf
* 2017-9-1
*/
class Receiver implements Runnable {
@Override
public void run() {
while(isRunning){
try {
String info = reader.readLine();
System.out.println(info);
} catch (IOException e) {
e.printStackTrace();
isRunning = false;
e.printStackTrace();
SocketUtil.close(reader);
}
}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2894 2017-09-05 15:27 chat\ClientChat.java
文件 7290 2017-09-05 15:22 chat\ServerChat.java
文件 395 2017-09-01 17:04 chat\SocketUtil.java
目录 0 2017-09-05 15:47 chat\
- 上一篇:模糊自适应PID控制器设计
- 下一篇:网络安全课程设计 剖析特洛伊木马
相关资源
- 通信软件的具体实例──基于Socket的
- 用Socket编程实现FTP
- websocket实现一对一聊天
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- SOCKET 网络编程 计算机网络 作业 客户
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- socket小工具(可方便建立TCP UDP的soc
- socket客户端源码
- 基于CSocket的多人聊天室
- socket文件传输源码
- Socket自制系统
- HP用SOCKET实现(客户端---服务端)
- zeromq的windows版本安装包
- STM32分别以串口硬件SPI模拟并口驱动
- 《TCP/IP:协议分析与应用编程》课后
- linux下基于socket和curses的双人弹球游戏
- 计算机网络socket编程实验
- linux下socket can 编程详解
- FANUC机器人Socket Message通讯设置及使用
- Delphi简单实现局域网远程开机
- 易语言websocket服务器源码
- websocket规范 RFC6455 中文版
- 富士康H61S主板最新BIOS,支持22NCPU
- Socket-UDP整合消息接收,发送
- websocket-rtsp-proxy-test.zip
- 基于QTsocket的局域网聊天室
- SuperSocket服务端与客户端通信
- 网络编程socket文件图片等传送
- tomcat7.0.42 下部署websocket需要替换的包
评论
共有 条评论