当前位置:文档之家› Linux C语言 socket编程 聊天室 可移植到arm开发板

Linux C语言 socket编程 聊天室 可移植到arm开发板

sockets聊天室
1.1介绍
包括一个客户端和一个服务器。

可实现多人聊天和两人一对一单独聊天。

1.2开发环境和工具
Linux gcc
1.3程序设计
服务器:
1.声明一个client结构体,包含用户自己的socket描述符mid,自己的用户名name以及
与自己聊天对象的Socket描述符fid(默认是-1,即公共聊天室)。

并定义一个结构体数组。

2.服务器新建一个socket设置默认的ip为自动获取,调用bind()函数绑定服务器socket
与ip。

3.开启listen()监听客户端的连接请求。

4.在while循环里,用accept()等待连接,连接成功后,把accept()返回的socket描述
符存入client结构体数组中。

5.每成功新建一个连接,就创建一个对应的子线程,接收并转发消息。

6.定义void rec_snd(int n)这个函数,用于接收和转发消息。

可选择公共聊天室和私聊,
私聊需要正确输入对方的名字。

连接建立以后就可以发送消息。

当接收的消息为bye 时,断开当前连接,如果是一对一私聊,一方断开另一方自动转入公共聊天室。

客户端:
1.新建一个socket,并与ip,端口进行绑定。

2.调用connect连接服务器。

连接成功后新建一个线程用于发送消息,
主线程在while中调用read()接收服务器消息。

3.Snd()函数用于向服务器发送消息。

4._select()函数用于选择功能。

1.4应用演示
服务器端成功开启等待连接:
当有客户端连接时,会显示ip 端口,socket标识符信息。

客户端成功连接上服务器时会收到提示输入用户名:
输入姓名后会提示选择功能:
选择私聊时至少需要开启两个客户端,两个客户端正确输入对方名字后会成功建立连接:
建立连接后就能正常聊天了
如果选择公共聊天室:
公共聊天室状态下的客户端发送的消息所有在线客户端都能收到
私聊用户发送的消息只有对方能收到
代码文件如下:(下载文档后双击可提取出来)cl.c se.c。

相关主题