java学习之利用TCP实现的简单聊天示例代码
作者:猿上生活 发布时间:2021-07-13 00:43:18
标签:java,tcp,聊天
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


猜你喜欢
- 本文实例讲述了C#显示文件夹下所有图片文件的方法。分享给大家供大家参考。具体实现方法如下:<%@ Page Language=&quo
- 最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类。但找了好多篇博客,总是发现有bug。因此就自己来写了个工具类
- 如下所示:public class Test{public static void main(String[] args) {
- BeanPostProcessor接口作用:如果我们想在Spring容器中完成bean实例化、配置以及其他初始化方法前后要添加一些自己逻辑处
- 原始Spring开发Person.java准备Person.java类:package com.jektong.spring;public
- 本文实例讲述了C#面向对象编程之猜拳游戏实现方法。分享给大家供大家参考。具体实现方法如下:1.需求现在要制作一个游戏,玩家与计算机进行猜拳游
- 前言最近在学习网络原理,突然萌发出自己实现一个网络服务器的想法,并且由于第三代小白机器人的开发需要,我把之前使用python、PHP写的那部
- 一、示例代码访问 localhost:8080/jsonTest —— 返回 json 格式的数据@
- 前语最近,Android手机上的手机管家更新了新版本,提供了红包闹钟功能,只要有微信红包或者QQ红包,就会自动提醒。恰逢最近又在做UI自动化
- cookies的创建:在客户端创建一个username的cookies,其值为oneday,有效期为1天.方法1:Response.Cook
- 1、Service的种类按运行地点分类:类别区别 优点缺点 应用本地服务(Local)该服务依附在主进程上,
- 一、加密介绍本文采用对称式加密算法DES和非对称式加密算法RSA结合做数据传输加密的方式。先说一下对称式加密 DES:对称式加密即使用单钥密
- 效果图国际惯例,先看效果图:具体效果就是吃豆人会根据吃不同颜色的豆子改变身体的颜色。绘制静态吃豆人、豆豆、眼睛首先,我们需要将这个静态的吃豆
- 开发android的时候,尽管手机已经root但是DDMS中还是没有data/data路径怎么办?可以用cmd命令提示符为逐个文件夹设置权限
- 调用方法:/** * 点击量/月(年)Callable */ public void yearlyClickCallable() { //
- 先来看两段代码: Thread t = new Thread(() => { AddIt AddDelegate = new
- 日期格式化标准 DateTime 格式字符串如果格式字符串只包含下表列出的某个单个格式说明符,则它们被解释为标准格式说明符。如果指定的格式字
- 一、信号量(Semaphore)信号量(Semaphore)是由内核对象维护的int变量,当信号量为0时,在信号量上等待的线程会堵塞,信号量
- 虽然文章的标题是词法分析,但首先还是要从编译原理说开来。编译原理应该很多人都听说过,虽然不一定会有多么了解。简单的说,编译原理就是研究如何进
- 本文实例讲述了C#设置页面单位和缩放的方法。分享给大家供大家参考。具体如下:using System;using System.Collec