采用开源的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等的数据?会的话应该怎么处理?初学网络,很多不懂,请大家指点。最好能把接收多个人数据的过程给说说。。