1

我在将信息和数据发送到 TCP 服务器时遇到了奇怪的问题。我的代码是用 C 和 Objective-C 编写的。我发送信息,然后在同一连接中发送我的数据。

TCPClient *tcp = [[TCPClient alloc] init];
TCPResponse c = [tcp connectWithHost:@"127.0.0.1" onPort:@"2506" withTimeout:30];
TCPResponse sendInfo = [tcp sendString:msg];
TCPResponse send = [tcp sendData: data];

sendInfo 很好,但另一个...

const void *dataBytes = [data bytes];
unsigned long length = [data length];
//NSLog(@"[####]\n %s [%ld][%ld]", dataBytes, sizeof(dataBytes), [data length]);

ssize_t bytes_sent = send(_sockfd, dataBytes, length, 0);
if (bytes_sent < length) {
    /* Se não enviar: retorna erro */
    return [TCPClient setupError:errno withDefault: TCPResponseErrorToSend];
}

如果注释行被注释,我在服务器中有错误,如果没有,数据可以正常到达。如果我把 sleep 而不是注释行,则数据可以正常到达。

我的服务器是用 Java 实现的。

谢谢你。

4

0 回答 0