社区
网络编程
帖子详情
SOCKET通行問題
archload-1
2007-02-05 10:44:53
大家好,我想問一下,我現在需要完成這樣一個任務:在不固定時間給客戶端發送消息。這樣的程序需要如何實現,我想應該用到了亂數產生器。不知道還需要什麽方面的知識才可以實現。請指教
...全文
229
8
打赏
收藏
SOCKET通行問題
大家好,我想問一下,我現在需要完成這樣一個任務:在不固定時間給客戶端發送消息。這樣的程序需要如何實現,我想應該用到了亂數產生器。不知道還需要什麽方面的知識才可以實現。請指教
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luoxiangdong
2007-02-06
打赏
举报
回复
//这是一个NPC服务器给在线会员随机的奖励金币的线程函数,仅供参考.
//注意,这是线程函数,一定要在单独一个线程中执行!
void NPC::RandomMoney()
{
//枚举房间,给每个房间产生一个事件
RoomsList::iterator node=_rooms->Items().begin();
ChatRoom* room=0;
while(node!=_rooms->Items().end())
{
room=*node;
if(room && room->id!=0)
{
COleDateTimeSpan t =COleDateTime::GetCurrentTime()-room->_lastGiveMoneyTime;
int size=room->Size();
if(t.GetTotalSeconds()>(_setting->Get("NPC.RoomRandomTimerPerUser",180000))/(size+1))
{
room->_lastGiveMoneyTime=COleDateTime::GetCurrentTime();
int pos=Random(0,size-1);
int money=Random(_setting->Get("NPC.RoomRandomMoneyMin",10),_setting->Get("NPC.RoomRandomMoneyMax",1000));
int messagepos=Random(1,10);
TRACE(L"%d,%d,%d,%d\r\n",size,pos,money,messagepos);
ClientMap::iterator cnode=room->Items().begin();
Client* p=0;
while(cnode!=_clients->Items().end() && (pos-->=0))
{
p=(*cnode).second;
cnode++;
}
if(p)
{
_db->Execute(str::Format(L"p_money_add %d,%d",p->uid,money));
CString msg=LS(str::Format(L"NPC.GiveMoneyRandom%d",messagepos));
msg.Replace(L"<NickName>",(TCHAR*)p->NickName);
_server->SendSystemMessage(room,str::Format(msg,money));
}
}
}
node++;
}
}
archload-1
2007-02-05
打赏
举报
回复
我的环境:visual studio 2005 MFC Dialog CAsyncSocket class Program
vcnewer
2007-02-05
打赏
举报
回复
有 while (true) 的程序一般使用多线程,在子线程中使用,程序就不会死掉了
比如这样,在主线程中 让 flag = false;可以让子线程的循环退出。
bool flag = true;
....
while ( flag )
{
//send(...);
sleep(100);
}
archload-1
2007-02-05
打赏
举报
回复
也就是说我要如何实现消息的自动发送。
archload-1
2007-02-05
打赏
举报
回复
可能我寫的有問題,我現在的問題是,不知道怎麽實現給客戶端發送消息,隔幾秒鐘發送一次,在隔的這幾秒鐘程序怎麽運行,用while(true)讓程序循環,程序就會死掉。
Sleep和消息處理機制怎麽實現?
vcnewer
2007-02-05
打赏
举报
回复
rand()函数: 产生随机数,做为 下次发消息间隔的时间秒数
archload-1
2007-02-05
打赏
举报
回复
發送消息部分不知道怎麽實現,因爲要隔幾秒鐘發送一次,所以想到了用while(true)循環,這樣程序就會死掉,所以不知道怎麽寫了。請指點
ouyh12345
2007-02-05
打赏
举报
回复
关键在于确定什么时候给客户端发消息.
而socket部分都是一样的.
基于
Socket
控件的局域网络通讯
在IT行业中,网络通信是计算机科学的一个重要领域,特别是在分布式系统和互联网应用中。本文将深入探讨基于
Socket
控件的...掌握
Socket
编程不仅可以提升我们的技术能力,也能帮助我们在解决实际问题时更有信心和效率。
智能通道系统
Socket
+多线程+数据库+工业上CRC查表校验信息码
本系统全面地展示了
Socket
与多线程,数据库,工业上采用的CRC查表校验信息码 等综合技术的完整代码,从代码的角度展示了工控通讯的完整过程,本系统可以改装成 地铁、火车站、海关、商场、旅游景点,智能小区、大型...
QT
socket
tcp异步通信
基于QThread和QTcpScoket进行异步
通行
封装。
用Java
Socket
实现高校信息化中用户动态口令身份认证.pdf
3. 介绍了如何用 Java
Socket
实现动态口令身份认证,包括认证服务器的实现、用户秘密
通行
短语的生成、初始序列号的生成、种子值的生成等。 4. 给出了相应的代码,包括认证服务器的代码、用户秘密
通行
短语的生成...
android 程序与PC
通行
本文将深入探讨如何使用
Socket
编程技术来构建一个Android程序,使其能够与PC进行数据交换。我们将主要关注标题和描述中提及的
Socket
通信机制,以及Android客户端(手机)和服务端(PC)的角色分配。 **
Socket
基础...
网络编程
18,358
社区成员
64,186
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章