我用MFCVC6编写的一个TCP一对多通信的程序,就是服务器端利用多线程技术(不使用Select等任何模型),能同时接收多个客户端的消息,其次,服务器端还能将消息群发给所有已连接的客户端,实现的基本思路是将每个线程中accept函数前往的套接字都保存到一个套接字数组中,套接字地址也保存到一个数组中。
然后在“群发”的按钮消息中,用for循环遍历套接字数组,循环执行send函数将消息发送给套接字数组中所有的套接字。
该程序简单完整,非常适合初学者研究WinSock一对多通信
2017/10/2 22:18:14 59KB WinSock 多线程 一对多
1
st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.51.0),目的是简化boost.asio开发;
其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来;
自动重连,数据透明传输,自动处理分包粘包问题(你可以像udp一样使用它);
注:只支持tcp协议;
教程:http://blog.csdn.net/yang79tao/article/details/77245141.1版更新内容:增加了自定义数据模式的支持,可用于st_asio_wrapperserver与其它客户端的通信、或者st_asio_wrapperclient与其它服务端的通信;
当然,两端都是st_asio_wrapper的话,就用透明传输即可(1.0版已经支持了)。
1.2版更新内容:修复BUG:当stop_service之后,再start_service时,client_base内部某些成员变量可能没有得到复位;
服务端增加修改监听地址功能,当然仍然要在start_service之前调用set_server_addr函数。
1.3版更新内容:增加自定义消息格式的发送,这个本来是在1.1版本实现的,结果我漏掉了,只实现了自定义消息格式的接收。
1.4版更新内容:将打包与解包器从client_base分离出来,以简化这个日益复杂的基类;
可以在运行时修改打包解包器。
1.5版更新内容:增加ipv6支持,默认是ipv4,服务端和客户端都通过设置一个ipv6的地址来开启这个功能;
增加了一些服务端helper函数,小改了一下客户端set_server_addr函数签名(调换了两个参数的位置以保持和服务端一样)。
1.6版更新内容:增加了接收消息缓存(改动较大,on_msg的语义有所变化,请看开发教程第三篇)。
1.7版更新内容:修复vc2010下编译错误;
修复默认解包器BUG(同时修改解包器接口);
修复log输出BUG;
更好的包装了服务端类库,现在服务端可以像客户端一样简单的使用了(完全不用继承或者重写虚函数,申请一个对象即可);
结构大调整,类名大调整,请参看开发教程第一篇。
1.8版更新内容:增加健壮性和稳定性;
退出服务更新优雅。
1.9版更新内容:提高代码通用性;
可以指定服务端同时投递多少个async_accept;
修复BUG,此BUG可能造成数据发送不完全。
2.0版更新内容:服务端增加对象池功能;
优化美化代码;
更规范化接口签名。
2015/10/13 15:38:36 16KB boost asio boost.asio asio_wrapper
1
课程设计题目:模拟即时通信系统实现一、题目描述基于社交的即时通信是腾*公司的主要业务,先后有QQ、微信、微博等服务,可能还将继续推出微商、微唱、微走、微笑等产品。
这些软件既可以独立提供服务,又互相辉映关联。
腾*公司希望对各系统进行整合构成统一的立体社交软件平台。
现请完成该平台的设计并实现。
要求如下:1、用户基本信息:号码ID,昵称,出生时间,T龄(号码申请时间)、所在地、好友列表、群列表。
微博与QQ共享ID,微信采用独立ID,但是可以与QQ号码绑定对应。
其他微X产品也分为这两种情况。
2、好友管理(1)实现各功能好友信息的添加、修改、删除、查询的功能。
(2)可以查询微X之间各自共同好友。
如微信可以添加QQ推荐好友。
3、群管理(1)设定每个微X功能已有1001、1002、1003、1004、1005、1006等群号。
(2)加入群、退出群、挨T、查询群成员等。
(3)不同微X之间群的理念不同,比如:QQ群可以申请加入,而微信群则只能推荐加入;
QQ群允许设置临时讨论组(子群),微信群则不允许;
QQ群有以群主为核心的管理员制度而微信群仅有群主为特权账号。
4、开通管理用户可以选择自己开通该平台的N个微X服务。
5、登录管理各微X之间只要有一个服务登录,则其它服务简单确认后视为自动登录。
6、功能展示要求(main函数)(1)设计约定。
开通服务情况、群成员信息和好友信息可以预先保存到文件中,在系统启动时将这些信息加载到内存中;
(2)一个服务登录后,本人开通的其它所有服务均进入开通状态。
(3)服务之间可以依据本人开通的任意另外一个服务的好友添加好友。
(4)展示一个服务当前群的特色功能;
在群成员数据不受伤害的前提下,动态变换为其他类型群的管理特色。
(5)实现QQ的点对点的TCP通信的收发功能。
(选做)提示:a)需要加载ws2_32.lib静态库,打开头文件winsock.h。
b)百度IP地址、端口等概念;
c)百度socket编程,关注bind、listen、accept、connect、send、receive等函数用法。
2022/9/6 17:02:27 51KB c++ 课程设计
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡