社区
网络编程
帖子详情
SOCKET通行問題
archload-1
2007-02-05 10:44:53
大家好,我想問一下,我現在需要完成這樣一個任務:在不固定時間給客戶端發送消息。這樣的程序需要如何實現,我想應該用到了亂數產生器。不知道還需要什麽方面的知識才可以實現。請指教
...全文
242
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部分都是一样的.
基于
Socket
控件的局域网络通讯
基于
Socket
控件的局域网络通讯,可以实现局域网中不同电脑之间了通信。
智能通道系统
Socket
+多线程+数据库+工业上CRC查表校验信息码
智能通道系统 本系统全面地展示了
Socket
与多线程,数据库,工业上采用的CRC查表校验信息码 等综合技术的完整代码,从代码的角度展示了工控通讯的完整过程,本系统可以改装成 地铁、火车站、海关、商场、旅游景点,智能小区、大型集团公司,大型停车场, 等等需要刷卡
通行
智能验证平台,本系统使用了软终端从理论的角度模拟出单片机终 端设备的通讯过程。 开发工具:Visual Studio 2008.NET(C#) + Microsoft SQL Server 2008
QT
socket
tcp异步通信
基于QThread和QTcpScoket进行异步
通行
封装。
用Java
Socket
实现高校信息化中用户动态口令身份认证.pdf
用Java
Socket
实现高校信息化中用户动态口令身份认证.pdf
android 程序与PC
通行
这是一个通过
Socket
手机和电脑进行通信,手机作为客服端,电脑作为服务端。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章