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