java学习之利用TCP实现的简单聊天示例代码

 更新时间:2017年12月25日 11:41:26   作者:猿上生活  
这篇文章主要给大家介绍了关于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();
  }
 }
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java数据结构和算法之链表详解

    Java数据结构和算法之链表详解

    链表是一种物理存储单元上非连续、非顺序的存储结构,java代码实现单链表,插入,删除和遍历等功能,这篇文章主要给大家介绍了关于Java数据结构和算法之链表的相关资料,需要的朋友可以参考下
    2024-01-01
  • 并发编程之Java内存模型

    并发编程之Java内存模型

    这篇文章主要介绍了Java并发编程之内存模型,Java内存模型中的顺序一致性,主要介绍重排序与顺序一致性内存模型,下面文章将围绕Java内存模型展开内容,需要的小伙伴可以参考一下
    2021-11-11
  • Java实战之火车票预订系统的实现

    Java实战之火车票预订系统的实现

    这篇文章主要介绍了利用Java实现的火车票预订系统,文中用到了JSP 、Servlert、JQuery、Ajax 等技术,文中示例代码讲解详细,需要的可以参考一下
    2022-02-02
  • Java中IO流 字节流实例详解

    Java中IO流 字节流实例详解

    这篇文章主要介绍了Java中IO流 字节流实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • springboot+hutool批量生成二维码压缩导出功能

    springboot+hutool批量生成二维码压缩导出功能

    这篇文章主要介绍了springboot+hutool批量生成二维码压缩导出功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Springboot单体架构http请求转换https请求来支持微信小程序调用接口

    Springboot单体架构http请求转换https请求来支持微信小程序调用接口

    这篇文章主要介绍了Springboot单体架构http请求转换https请求来支持微信小程序调用接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • java使用zookeeper实现的分布式锁示例

    java使用zookeeper实现的分布式锁示例

    这篇文章主要介绍了java使用zookeeper实现的分布式锁示例,需要的朋友可以参考下
    2014-05-05
  • Java编程实现对十六进制字符串异或运算代码示例

    Java编程实现对十六进制字符串异或运算代码示例

    这篇文章主要介绍了Java编程实现对十六进制字符串异或运算代码示例,简述了异或运算以及具体实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java中实现控制台打印sql语句方式

    java中实现控制台打印sql语句方式

    这篇文章主要介绍了java中实现控制台打印sql语句方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 深入了解Java File对象的使用

    深入了解Java File对象的使用

    这篇文章主要为大家详细介绍了Java中File对象的使用的相关资料,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-11-11

最新评论