asyncSocket 怎么实现多人通信?

southbirdfly 2011-12-15 05:12:33
采用开源的asyncSocket,目前实现一对一通信。但多对一的时候就不知道怎么做了。。
我的做法是这样:
当收到新的连接时就把socket保存起来,大概如下:
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket

[socketArray addObject:newSocket];


-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString*) host port:(UInt16)port
{
[sock readDataWithTimeout:-1 tag:0];
}

断开连接时:
- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
[socketArray removeObject:sock];
}

收到数据时:
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
[messageTranslator translatorMessage:data];
[sock readDataWithTimeout:-1 tag:0];
}


问题是这样的,A正在接收B传过来的数据并显示,这时候C也连到A,从此A就只能显示到C的数据,B后面的数据就没了。。
什么原因?

还有,当A和多台机器连接时,是不是需要开辟多个线程去分别接收每个socket的数据?就是在
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag这个函数里,会不会一下子接到B的数据,一下子接到C,D等的数据?会的话应该怎么处理?

初学网络,很多不懂,请大家指点。最好能把接收多个人数据的过程给说说。。
...全文
227 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-01-10
  • 打赏
  • 举报
回复
没怎么研究过,不过应该不复杂。
lovecvvc 2011-12-18
  • 打赏
  • 举报
回复
不是太懂
ixcoder 2011-12-16
  • 打赏
  • 举报
回复
需要用队列
天空梵城 2011-12-16
  • 打赏
  • 举报
回复
用高阻态队列思想去构架

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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