求助 关于多线程socket

dodoboy 2007-07-13 09:52:35
要求进行的处理是服务器接受客户端的消息,解析消息,然后将对应的消息发送给客户端,这三个处理对应三个线程。如果要多个客户端与服务器端连接的话,服务器端要怎么设置?是对应每个客户端创建对应的三个线程,接受和发送数据的buffer怎么分配?
...全文
141 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dice_com 2007-07-13
  • 打赏
  • 举报
回复
当然有,既然建立起了连接,不管你是什么连接(TCP,UDP或者其他)都可以从连接的对象中获取到RemoteIP,去查一下msdn,连接对象肯定有类似于GetRemoteIP的方法
dodoboy 2007-07-13
  • 打赏
  • 举报
回复
收到的消息格式是事先定义好的,不能在前面加IP头。还有其他的方法吗?
dice_com 2007-07-13
  • 打赏
  • 举报
回复
消息结构体定义啊,去简单学习一个任意的通讯协议,比如tcp,udp,你在你的消息头中带一个SourceIP不就ok了么?
想不到你会问这个问题,呵呵
dodoboy 2007-07-13
  • 打赏
  • 举报
回复
问题是消息要发送到对应的客户端,如何能鉴别哪个消息谁的呢?
dice_com 2007-07-13
  • 打赏
  • 举报
回复
作两个队列,
队列A 存储待解析消息
队列B 存储待发送消息
你可以根据数据量来决定增加还是不增加新线程,比如你定义一个规则,队列中只能有5个消息排队,则当队列A中超过5个消息时你再new出一个新的消息解析线程,当无排队消息时你可让此线程消亡,
消息发送队列也是类似;
没有必要强制每个客户端必须启动三个线程,很浪费资源的。
至于内存的分配,可系统启动时即分配一组内存栈,对内存进行压入、取出操作,当消息增多时,适当增大此内存栈即可。注意对内存的适时收回

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧