Linux 小实验之我的局域网聊天室

本文介绍了作者通过Linux网络编程知识构建的一个局域网聊天室实验,利用UDP协议进行通信。该实验包含群聊和私聊功能,并讨论了UDP协议可能存在的问题。文中详细阐述了服务器和客户端的实现流程,包括链表数据结构的运用,以及用户登录、退出、发送消息等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 小实验之我的聊天室

        现在学了linux网络编程,就想着做一个局域网聊天的小实验,虽然实验不难,但是个人感觉写代码这件事情非常好玩,做出一点好玩的东西与别人分享是一件很有意义的事,分享才会快乐。

       不多说先来看看效果,自己想想这是如何实现的。

用户上线系统会统计在线人数个名字


其他客户端上线,自己也可以看到,模仿飞秋哦

默认情况下发送的时群聊信息

输入CHAT才会进入私聊模式,然后选择发送的对象,下图分别是ABCB发消息给A,则C收不到


如果不在线会收到提示“*** NOT Online”,F已经下线,此时有人要和F聊天,在出现了不在线的提示,我应该在客户端收到消息的时候延迟一下,因为服务器找人需要一点时间,所以会出现下面这样的效果。

客户端输入quit则客户端退出


服务器输入quit则所有人都要退了,quit时由于有人在线,所以会提示


说一下UDP不好的地方,如果客户端是非法退出即Ctrl+c退出,服务器会认为这人依然在线,其他用户给他发的信息则会收不到。


         再来说说我的聊天室的实现。这里采用的是UDP协议让客户端连接服务器,因为UDP是无连接的方式,高效率的传输数据。这里我让服务器创建一个子进程去帮忙与客户端交互,父进程去发送系统消息,让子进程广播。客户端发送数据到服务器,在让服务器将消息转发个其他用户或者指定的用户,实现一个群聊和私聊的功能。

本实验用到了数据结构的相关知识,一个简单的链表,链表需要实现插入和删除等基本功能,在链表中,数据类型不在是常用的INT型了,而是一个结构体型的,因为我们要将用户的地址信息保存起来。

服务器流程:

1.创建UDP套接字

2.创建子进程与客户端交互

3.子进程根据消息类型做不同的事

4.父进程发送系统消息给子进程,让子进程发给所有用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值