社区
网络编程
帖子详情
SOCKET通行問題
archload-1
2007-02-05 10:44:53
大家好,我想問一下,我現在需要完成這樣一個任務:在不固定時間給客戶端發送消息。這樣的程序需要如何實現,我想應該用到了亂數產生器。不知道還需要什麽方面的知識才可以實現。請指教
...全文
226
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部分都是一样的.
金融科技-SpringBoot231MyBatisPlus332Layui256EasyWeb318-四方支付系统商户管理运营后台资金结算交易监控风.zip
金融科技_SpringBoot231MyBatisPlus332Layui256EasyWeb318_四方支付系统商户管理运营后台资金结算交易监控风.zip【vmware虚拟机安装】资源征集
java kotlin demo-Kotlin资源
demo for java and kotlin
2025713.pdf
2025713.pdf
Docker容器如何绑定宿主机外部IP与端口详解
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 Docker让容器通过外部访问或容器互联来提供网络服务。用 myfirstapp 镜像演示: 外部访问容器 容器启动后,若其中运行网络应用,可用 -p 或 -P 指定端口映射。 a. 使用 -P(大写)时,Docker 会随机挑选一个宿主机端口映射到容器内部暴露的端口。 示例: dockerrun−d−Pmyfirstapppythonapp.py docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
(完整word版)基于MATLAB的水箱液位控制系统的设计与.doc
(完整word版)基于MATLAB的水箱液位控制系统的设计与.doc
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章