java学习之利用TCP实现的简单聊天示例代码
作者:猿上生活 时间:2021-07-13 00:43:18
TCP
TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。
TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
本文主要介绍了java利用TCP实现简单聊天的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
示例代码
使用tcp协议实现的简单聊天功能(非常简单的)
思想:使用2个线程,一个线程是用来接收消息的,另一个线程是用来发消息的。
客户端Demo代码:
public class SendDemo {
public static void main(String[] args) throws Exception{
Socket socket= new Socket(InetAddress.getLocalHost(),8888);
SendImpl sendImpl= new SendImpl(socket);
//发送的线程
new Thread(sendImpl).start();
//接收的线程
ReciveImpl reciveImpl=new ReciveImpl(socket);
new Thread(reciveImpl).start();
}
}
服务器端Demo代码:
public class ServerDemo {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket =new ServerSocket(8888);
Socket socket=serverSocket.accept();
SendImpl sendImpl= new SendImpl(socket);
new Thread(sendImpl).start();
ReciveImpl reciveImpl=new ReciveImpl(socket);
new Thread(reciveImpl).start();
}
}
发送线程的Demo代码:
public class SendImpl implements Runnable{
private Socket socket;
public SendImpl(Socket socket) {
this.socket=socket;
// TODO Auto-generated constructor stub
}
@Override
public void run() {
Scanner scanner=new Scanner(System.in);
while(true){
try {
OutputStream outputStream = socket.getOutputStream();
String string= scanner.nextLine();
outputStream.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
接收线程的Demo代码:
public class ReciveImpl implements Runnable {
private Socket socket;
public ReciveImpl(Socket socket) {
this.socket=socket;
// TODO Auto-generated constructor stub
}
@Override
public void run() {
while(true ){
try {
InputStream inputStream = socket.getInputStream();
byte[] b=new byte[1024];
int len= inputStream.read(b);
System.out.println("收到消息:"+new String(b,0,len));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
来源:http://www.cnblogs.com/xuzhaocai/archive/2017/12/24/8099681.html
标签:java,tcp,聊天
0
投稿
猜你喜欢
Android基于高德地图完全自定义Marker的实现方法
2023-03-09 03:32:30
java 单例模式和工厂模式实例详解
2023-04-07 22:10:19
c#使用listbox的详细方法和常见问题解决
2023-08-27 11:28:56
C#实现JSON字符串序列化与反序列化的方法
2023-12-01 12:40:23
利用Jetpack Compose绘制可爱的天气动画
2022-04-06 18:50:35
Java 线程池ExecutorService详解及实例代码
2022-09-02 17:07:24
C#文件下载实例代码(适用于各个浏览器)
2022-12-28 06:25:48
java实现简单控制台通讯录
2023-05-24 14:33:20
java设计模式理解依赖于抽象不依赖具体的分析
2023-09-13 01:41:45
Lombok使用@Tolerate实现冲突兼容问题
2021-06-27 06:50:55
android实现点击图片全屏展示效果
2023-12-06 22:42:25
Android使用控件ImageView加载图片的方法
2022-11-22 03:52:31
Java实现插入公式到PPT的示例代码
2023-11-12 03:04:41
详解Java注解知识点
2021-06-24 18:39:12
Android Glide图片加载(加载监听、加载动画)
2022-08-27 08:31:24
Android 关机弹出选择菜单的深入解析
2023-03-19 20:56:09
C#中实现插入、删除Excel分页符的方法
2022-05-27 02:51:16
Android SharedPreferences的使用分析
2023-11-09 18:47:08
Java容器ArrayList知识点总结
2023-09-05 17:46:04
Kotlin中的5种单例模式示例详解
2022-03-01 22:51:58