聊天室用户列表功能

本文介绍如何使用Socket编程实现一个简单的聊天室用户列表功能。用户登录时,通过发送主机名到服务器,服务器再将信息广播到所有客户端,更新用户列表。服务器端采用监听和接受客户端连接的方式,客户端则负责发送主机名并接收广播的用户信息。代码示例展示了服务器端和客户端的交互流程,包括连接、接收和广播操作。后续计划扩展到多客户端和处理用户断开连接的情况。

实现类似聊天室的那种用户列表的功能,其基本原理是每次用户登陆到聊天室就给服务器发送一个消息,该消息可以是用户的IP地址、主机名或登陆昵称(这里为方便起见用的是主机名),然后服务器收到消息后就将该消息广播到连接到服务器的所有客户端,这样所有的用户就都有了一个包含其他用户消息的列表了。

下面是简单的代码,仅测试这个功能。

 

服务器端代码:

 

 

 

客户端代码:

 

 

 

由于是初学网络编程,以上代码写的有点乱七八糟。而且还只实现了一个客户端的情况。后面学习中我将尝试多个客户端情况的网络通信程序设计。以及在多客户端情况下当某用户断开连接时去除用户名的功能。

 

 

今天我又学习了select模型,这个模型可以在一个线程里处理多个套接字(好像最多是64个),于是乎我就把昨天写的那程序改了下,把服务器端的代码改用select的处理方式,然后客户端的代码基本差不多,结果能达到预想的处理多个用户连接服务器并向组合框里添加多个用户名的要求。线将改进后的代码贴出来:

 

 这是在一个按钮消息函数里实现的,每次打开服务器后程序都会有点卡,不知道是不是在不停的循环处理套接字的缘故

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值