当前位置:网站首页 > 编程语言 > 正文

网络聊天代码(网络聊天室代码)



使用Java的Socket实现客户端和服务器端之间的连接,实现客户端重复发送数据到服务器端的功能。即,用户可以在控制台不断输入内容,并将内容逐一发送给服务端。并在服务端显示。

客户端:

服务端:

Java网络编程 聊天室_#include

Java网络编程 聊天室_Java网络编程 聊天室_02

udp和TCP socket通信过程基本上是一样的,只是调用api时传入的配置不一样,以TCP client/server模型为例子看一下整个过程。

Java网络编程 聊天室_Java网络编程 聊天室_03

1. socket()

  socket() API是在glibc中实现的,该函数又调用到了kernel的sys_socket(),调用链如下。

Java网络编程 聊天室_Java网络编程 聊天室_04

详细的kernel实现我没有去读,大体上这样理解。调用socket()会在内核空间中分配内存然后保存相关的配置。同时会把这块kernel的内存与文件系统关联,以后便可以通过filehandle来访问修改这块配置或者read/write socket。操作socket就像操作file一样,应了那句unix一切皆file。提示系统的最大filehandle数是有限制的,/proc/sys/fs/file-max设置了最大可用filehandle数。当然这是个linux的配置,可以更改,方法参见Increasing the number of open file descriptors,有人做到过1.6 million connection。

2. bind()

3. listen()

4. accept()

疑问:kernel是如何区分listening socket和connected socket的呢??虽然二者的五元组是不一样的,kernel如何知道通过哪个socket跟APP交互?通过解析内容,是SYN还是数据?暂时存疑。

5. connect()

  

到此这篇网络聊天代码(网络聊天室代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • polovillae是什么品牌(polovillae是什么品牌女装)2026-04-04 15:00:07
  • 如何安装虚拟机?(如何安装虚拟机win11)2026-04-04 15:00:07
  • 越狱源安装(越狱源安装不了shadow)2026-04-04 15:00:07
  • 游戏的分类标准是什么王娟(游戏分类的标准是什么多选题公需课)2026-04-04 15:00:07
  • 网页文件传输(网页文件传输助手)2026-04-04 15:00:07
  • 密码库黄在哪里(密码库在线生成)2026-04-04 15:00:07
  • 打开目录失败:权限不足(当前目录权限不足)2026-04-04 15:00:07
  • 如何安装虚拟机win10系统(如何安装虚拟机win10系统)2026-04-04 15:00:07
  • vs怎么调试运行程序(vs怎么一步一步调试)2026-04-04 15:00:07
  • 代码网站推荐(代码 网站)2026-04-04 15:00:07
  • 全屏图片