Java基于Tcp的基础聊天功能实例

作者:qq_42412646 时间:2023-11-25 05:26:56 

本文实例讲述了Java基于Tcp的基础聊天功能。分享给大家供大家参考,具体如下:

最基础的聊天,用户端和服务器端每次说一句,而且严格规定了先后到顺序。

服务器端:


import java.io.*;
import java.net.*;
public class ChatServer {
   public static void main(String[] args) {
       ServerSocket server = null;
       try {
           server = new ServerSocket(12138);
       } catch (IOException e) {
           System.out.println("error" + e);
       }
//        server = null;
       try {
           Socket ac = null;
//            ac = new Socket();
//            ac = null;
           ac = server.accept();
           BufferedReader is = null;
           is = new BufferedReader(new InputStreamReader(ac.getInputStream()));
           BufferedReader dis = new BufferedReader(new InputStreamReader(System.in));
           PrintWriter os = new PrintWriter(ac.getOutputStream());
           String line = null;
           System.out.println("clinent " + is.readLine());
           line = dis.readLine();
           while(!line.equals("bey")) {
               os.println(line);
               os.flush();
               System.out.println("server " + line);
               System.out.println("client " + is.readLine());
               line = dis.readLine();
           }
           os.close();
           dis.close();
           is.close();
           ac.close();
       } catch (Exception e) {
           System.out.println("error" + e);
       }
   }
}

用户端:


public class ChatClient {
   public static void main(String[] args) {
       Socket client = null;
       try {
           client = new Socket("127.0.0.1",12138);
           BufferedReader dis = new BufferedReader(new InputStreamReader(System.in));
           BufferedReader is = new BufferedReader(new InputStreamReader(client.getInputStream()));
           PrintWriter os = new PrintWriter(client.getOutputStream());
           String line = dis.readLine();
           while(!line.equals("bey")) {
               os.println(line);
               os.flush();
               System.out.println("client " + line);
               System.out.println("server " + is.readLine());
               line = is.readLine();
           }
           os.close();
           dis.close();
           is.close();
           client.close();
       } catch (Exception e) {
           System.out.println("error" + e);
       }
   }
}

无论是用户端还是服务器端都用了BufferedReader用来写入一些了连续的字符串,用PrintWriter进行输出。

注:BufferedWriter接收到的参数需要是字符类的数据流,所以要建一个inputStreamReader,而InputStreamReader的参数是数据流即可。

上面规定了写入的顺序是客户端先写,然后是服务器端;

注意要在循环结束的时候close个个数据流和端口。

希望本文所述对大家java程序设计有所帮助。

来源:https://blog.csdn.net/qq_42412646/article/details/101928242

标签:Java,Tcp,聊天
0
投稿

猜你喜欢

  • HashMap红黑树入门(实现一个简单的红黑树)

    2022-10-18 13:52:35
  • 利用C#版OpenCV实现圆心求取实例代码

    2022-10-28 12:51:48
  • Java多维数组和Arrays类方法总结详解

    2022-04-27 22:30:18
  • SpringCloud eureka(server)微服务集群搭建过程

    2023-05-22 15:08:55
  • mybatis createcriteria和or的区别说明

    2021-09-27 09:20:40
  • Flutter实现自定义筛选框的示例代码

    2022-08-13 21:52:40
  • Redis原子计数器incr,防止并发请求操作

    2021-07-03 13:35:15
  • 在 Visual Studio 中查看反汇编代码

    2023-05-30 20:09:50
  • Android中使用CircleImageView和Cardview制作圆形头像的方法

    2022-04-19 05:41:35
  • 自己动手写一个java版简单云相册

    2022-09-08 01:28:56
  • Android编程判断网络连接是否可用的方法

    2021-06-25 20:25:03
  • Android使用AudioRecord实现暂停录音功能实例代码

    2022-06-02 01:26:04
  • Android用Fragment创建选项卡

    2022-01-12 09:30:36
  • 结合Windows窗口深入分析Android窗口的实现

    2022-04-03 16:50:20
  • 浅谈Android Studio如何Debug对应so文件C/C++代码

    2023-11-20 03:23:35
  • Netty与NIO超详细讲解

    2022-08-16 00:44:37
  • Java中抽象类与方法的重写方式

    2023-08-25 09:20:29
  • java实现文件重命名的方法

    2022-11-06 05:42:25
  • 解析JavaSe的内部类

    2022-08-14 18:19:33
  • Java 常量与变量的区别详细介绍

    2023-03-09 13:30:48
  • asp之家 软件编程 m.aspxhome.com