【1】socket服务器

/*** @Description 即时消息服务器* @author xiao tang* @version 1.0.0* @createTime 2022年01月23日*/
public class IMSocketServer {private static int PORT = 13;public static void main(String[] args) {ServerSocket server = null;try {// 开启端口server = new ServerSocket(PORT);System.out.println("服务器已启动");// 与客户端建立socket连接Socket socket = server.accept();System.out.println("客户端请求,创建连接成功");// 写出器PrintWriter writer2Client = new PrintWriter(socket.getOutputStream());writer2Client.write("连接创建成功\r\n");writer2Client.flush();// 客户端读入器Scanner scanner4Client = new Scanner(socket.getInputStream());// 控制台读入器Scanner scanner4Console = new Scanner(System.in);// 等待客户端输入while(true) {// 读取客户端消息并打印String msg4Client = scanner4Client.nextLine();System.out.println("客户端:" + msg4Client);System.out.print("服务端:");// 获取控制台输入数据并发送到客户端String msg4Console = scanner4Console.nextLine();writer2Client.write(msg4Console + "\r\n");writer2Client.flush();}} catch (IOException e) {throw new MyRunTimeException("打开端口socket失败,端口=" + PORT + ", 异常信息=" + e.getMessage());} finally {try {if (server != null) {server.close();}} catch (Exception e) {}}}
}

【2】socket客户端

/*** @Description 即时消息客户端* @author xiao tang* @version 1.0.0* @createTime 2022年01月23日*/
public class IMSocketClient {private static int PORT = 13;public static void main(String[] args) {try (Socket socket = new Socket()) {// 与服务器端建立socket连接socket.connect(new InetSocketAddress("localhost", PORT), 3000);// 新建读取器,写出器Scanner scanner4Server = new Scanner(socket.getInputStream());PrintWriter printWriter = new PrintWriter(socket.getOutputStream());// 控制台读入器Scanner scanner4Console = new Scanner(System.in);System.out.println("连接成功,等待服务器响应");// 等待服务器控制台输入while(true) {// 读取服务器响应并打印String msg4Server = scanner4Server.next();System.out.println("服务器:" + msg4Server);System.out.printf("\n客户端:");// 客户端读取控制台输入,并发送到服务器String msg4Console = scanner4Console.nextLine();printWriter.write(msg4Console + "\r\n");printWriter.flush();}} catch (Exception e) {throw new MyRunTimeException("客户端通讯失败, 异常信息=" + e.getMessage());}}
}

【3】通讯效果


【4】注意事项

1.发送消息的时候,一定要加上回车和换行符(\r\n),不然 scanner.nextLine() 无法识别到一行的结束,就会一直阻塞;

java socket实现简单即时通讯相关推荐

  1. java socket 模拟im 即时通讯

    自己想了一下怎么实现,就写了,没有深究是否合理.更多处理没有写下去,例如收件人不在线,应该保存在数据库,等下一次连接的时候刷新map,再把数据发送过去,图片发送也没有做,也没有用json格式 sock ...

  2. Java集成环信即时通讯(SpringBoot)

    Java集成环信即时通讯(SpringBoot) 前言:链接: 环信官网友情链接. 官网注册一个社区版账号,社区版限制注册100个用户. 企业版资费如下 还有硬性要求,账号余额9000以上 准备完成得 ...

  3. java Socket实现简单在线聊天(二)

    出处:http://blog.csdn.net/tuzongxun 接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使 ...

  4. 基于socket的可发送表情简单即时通讯

    前言 这段时间做的东西比较杂,但是对学习来说还是很有帮助的,这次做的基于socket的即时通讯也是为了更加了解IM,本来是打算使用openfire或者apollo服务器来实现的,但是中途时间上的问题, ...

  5. 推荐:一款Java开源的Springboot 即时通讯 IM 聊天系统

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 # 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天 ...

  6. 基于Bmob的简单即时通讯

    前言: 关于即时通讯,项目中要是需要一个收发消息的功能.从开始到写完即时通讯这块儿,花了大约3天时间.但真的想吐槽下bmobIM的服务器,有短板时间都在等待连接:disconnect或者java.ut ...

  7. python怎么连接socket_python socket连接实现即时通讯

    最近闲暇无事,好多人问即时通讯怎么做的,尤其是对于当下大火的python更是如此,大多数人都知道一个xmpp或者xampp框架,于是开了简书,大致说明一下 不明白tcp/udp协议底层原理的,自行百度 ...

  8. 一款Java开源的SpringBoot即时通讯IM 聊天系统

    开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天等.今天,就来给大家分享一个开源的即时通讯系统.如对文章不感兴趣可直接跳至文章末尾,有获取源码链接的方法. 但文章内容是需要你简单的 过一 ...

  9. Java Socket实现简单的即时通信

    一.项目简述 这是一个即时通信软件的简单实现,通过自定义协议实现登录.退出等控制命令,即时通信软件需要有服务器端与客户端. 二.自定义协议 1.Protocol协议实体类,封装了消息类型以及发送消息. ...

最新文章

  1. [LeetCode] 回溯算法
  2. NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持
  3. python diango_Django 安装
  4. 聚集索引和非聚集索引
  5. 从Speedment 3.0.17或更高版本的事务轻松返回值
  6. ES6(ECMAScript2015)/01/ES6简介
  7. python中集合运算_python集合的运算
  8. 基于windows PE文件的恶意代码分析;使用SystemInternal工具与内核调试器研究windows用户空间与内核空间...
  9. 加载heat resource的代码分析
  10. cdr圆形渐变填充怎么设置_适用于平面设计的软件cdr!
  11. 平面设计和3D美术设计哪个更好就业?次世代又是什么?
  12. aic值检验 p值_R语言入门之独立性检验
  13. php车牌识别,跨平台车牌识别应用 Light-LPR
  14. 旅行青蛙游戏背后所存在的情感。
  15. 将CSDN文章内容转成PDF文件使用教程
  16. 有没有被坦克大战支配过?
  17. Python 删除列表中指定的元素
  18. 如何使用VNC进行远程桌面控制
  19. Java基础——高级
  20. python表情符号编码_Emoji的编码以及常见问题处理

热门文章

  1. #3771. Triple 生成函数 + FFT + 容斥
  2. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】
  3. 【CF1349D】Slime and Biscuits【概率期望】【解方程】
  4. bzoj4543. [POI2014]Hotel加强版
  5. Ball Dropping
  6. [AtCoder Beginner Contest 215] A-G题解
  7. 总结:8.9 模拟(枚举搜索)
  8. 最短路模板:dij,spfa与floyd
  9. CF1019D-Large Triangle【计算几何,二分】
  10. CF750E-New Year and Old Subsequence【动态dp】