TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。
TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
本文主要介绍了java利用TCP实现简单聊天的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
示例代码
使用tcp协议实现的简单聊天功能(非常简单的)
思想:使用2个线程,一个线程是用来接收消息的,另一个线程是用来发消息的。
客户端Demo代码:
?
1
2
3
4
5
6
7
8
9
10
11
|
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代码:
?
1
2
3
4
5
6
7
8
9
10
|
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代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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();
}
}
}
}
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。
原文链接:http://www.cnblogs.com/xuzhaocai/archive/2017/12/24/8099681.html
相关文章
猜你喜欢
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-27 47
-
2025-06-04 85
-
2025-05-27 27
-
2025-05-25 85
-
2025-05-29 97
热门评论