社区
网络编程
帖子详情
SOCKET通行問題
archload-1
2007-02-05 10:44:53
大家好,我想問一下,我現在需要完成這樣一個任務:在不固定時間給客戶端發送消息。這樣的程序需要如何實現,我想應該用到了亂數產生器。不知道還需要什麽方面的知識才可以實現。請指教
...全文
256
8
打赏
收藏
SOCKET通行問題
大家好,我想問一下,我現在需要完成這樣一個任務:在不固定時間給客戶端發送消息。這樣的程序需要如何實現,我想應該用到了亂數產生器。不知道還需要什麽方面的知識才可以實現。請指教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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部分都是一样的.
python代码查询港澳
通行
证办理进度
本文提供了一个使用Python 3.3的
socket
模块来查询广东省公安厅出入境政务服务网上的港澳
通行
证办理进度的方法。通过构造
socket
请求并解析返回的HTML,能够提取到具体的办理进度信息。
Ubuntu下进行
Socket
编程
本文介绍了在Ubuntu系统下进行C++
Socket
编程的初步实践,包括TCP文件传输和窗口对话的两个示例。通过解决编译问题,成功运行了代码,并验证了数据传输的正确性。这是一个入门级的
Socket
编程实验,为后续深入学习奠定了基础。
python程序查询港澳
通行
证办理进度
本文介绍了如何使用Python 3.3编写代码,通过
socket
连接广东省公安厅出入境政务服务网,构造请求网页HTML,并利用正则表达式匹配查询结果来获取护照、
通行
证的办理进度。
socket
error 错误类型列表
本文详细列举了各种
Socket
错误代码及其含义,包括常见的如地址已被使用(
SOCKET
_EADDRINUSE)、连接被拒绝(
SOCKET
_ECONNREFUSED)等错误,并解释了每种错误发生的可能原因。
Android 面试
Socket
与Web
Socket
本文围绕Android面试中
Socket
与Web
Socket
展开。介绍了
Socket
,包括其定义、通讯过程,给出TCP和UDP协议的代码示例,还提及实现Android跨进程通信。同时阐述了Web
Socket
,它是全双工通信协议,弥补了HTTP协议不足,具有双向平等对话、兼容性好等特点。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章