一个客户端和一个服务器端聊天
客户端 一个 聊天 服务器端
2023-09-14 09:00:42 时间
*发送线程
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class SendThread extends Thread {
private Socket socket;
public SendThread(Socket socket){
this.socket = socket;
}
@Override
public void run() {
//获得输出管道。
try {
OutputStream os = socket.getOutputStream();
//接收键盘录入的数据。
Scanner input = new Scanner(System.in);
String str = null;
while(true){
str = input.nextLine();
os.write((str+"\r\n").getBytes());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
*接收线程
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class ReceiverThread extends Thread {
private Socket socket;
public ReceiverThread(Socket socket){
this.socket = socket;
}
//接收数据。
@Override
public void run() {
//获得读取管道。
try {
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String ip = socket.getInetAddress().getHostAddress();
int port = socket.getPort();
String str = null;
while(true){
if(socket==null){
break;
}
str = br.readLine();
System.out.println(ip+"-"+port+":"+str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
*聊天客户端
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* 一个客户端与一个服务端进行聊天。
* 1:接收数据,
* 2:发送数据。
* 同时进行。:线程。 一个线程负责接收数据,一个线程负责发送数据。
*/
public class ChatClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1",9988);
//开启线程。
new SendThread(socket).start();
new ReceiverThread(socket).start();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
*聊天服务器端
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(9988);
Socket s = ss.accept();
new SendThread(s).start();
new ReceiverThread(s).start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关文章
- java WebSocket客户端断线重连 | 实用代码框架「建议收藏」
- SourceTree for Mac(Git客户端工具)
- 【PuTTY】一个免费的SSH和Telnet客户端
- 推荐一款神仙颜值的Redis客户端工具
- Fiddler 显示客户端请求时间、请求耗时、服务器地址
- 【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )
- Redis的Python客户端redis-py安装使用说明文档
- [javaSE] 网络编程(浏览器客户端-自定义服务端)详解编程语言
- MySQL的多客户端支持:一个安全可靠的实现(多客户端mysql)
- Chrony:一个类 Unix 系统上 NTP 客户端和服务器替代品
- 微软在macOS老版本上弃用OneDrive同步客户端应用
- 网易闪电邮客户端安装及配置
- Putty是一个免费的telnet、rlogin和ssh客户端,但是功能丝毫不逊色于商业的telnet类工具。
- 一个用户友好,轻巧,快速的电子邮件客户端。
- GFTP是X Window下的一个用Gtk开发的多线程FTP客户端工具,它与Microsoft Windows下运行的CuteFTP等FTP工具极为类似。
- 网易音乐客户端是一款支持Deepin,Ubuntu系统并深受用户喜爱的音乐播放器。
- 屏蔽浏览器客户端播放器的广告软件(ADSafe3)限时免费下载
- 一个用户友好,轻巧,快速的电子邮件客户端。
- 数据库管理工具DBeaver,一个通用的数据库管理工具和 SQL 客户端,可以兼容多种数据库,更重要的是支持Linux系统。
- 正确使用MSSQL语句:客户端实现操作指导(mssql语句执行客户端)
- 深入探索MySQL客户端的使用与优化方法(mysql_client)
- 多客户端同时连接Redis构建一个高性能的应用体系(多客户端链接redis)