【问题标题】:AsyncSocket writeData issueAsyncSocket writeData 问题
【发布时间】:2010-09-15 15:44:33
【问题描述】:

我正在使用以下代码连接到服务器套接字:

- (void)viewDidLoad {
    [super viewDidLoad];
    asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];

    NSError *err = nil;
    //[asyncSocket connectToHost:@"192.168.0.200" onPort:8000 error:&err];
    if(![asyncSocket connectToHost:@"192.168.0.78" onPort:2055 error:&err])
    {
        [asyncSocket connectToHost:@"192.168.0.78" onPort:2055 error:&err];
    }
}

然后在 didConnectToHost 委托中,我正在写一些文本:

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port);

    for(int i=0;i<5;i++){
        NSString* str= [NSString stringWithFormat: @"Hello Server: %d",i];
        NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];
        [sock writeData:data withTimeout:-1 tag:1];

    }
}

当我连接到套接字时,连接的消息会显示在服务器端控制台上。在服务器端,正在使用 streamReader 从流中读取数据。我们在服务器端使用 TCPListener 类(c# .Net)。但是当我从客户端套接字写入数据并尝试读取客户端发送的数据时,服务器上的 streamReader 对象正在获取空数据。当我们退出客户端应用程序时,服务器端的streamReader对象正在获取客户端发送的数据。

我们需要从客户端写入后立即在服务器端读取数据,而不是退出应用程序。

谁能帮我解决这个问题?

【问题讨论】:

  • 如果第一次失败,您为什么要立即尝试与同一 IP/端口建立新连接?如果它失败了,肯定是有问题,并且在如此快速地重试时几乎肯定会失败?

标签: c# iphone


【解决方案1】:

你只需要用 '\n' 结束字符串 我知道为时已晚,所以希望它可以帮助别人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多