在我的应用程序中,我应该与服务器端(作为服务器的小设备)通信。
我的主要操作是写一个17字节的序列并读取结果。我使用过GCDAsyncSocket,但它没有给我带来好结果。
我想问你是否有办法以有效的方式完成这项工作。
答案 0 :(得分:0)
不要在主线程上执行此操作。由于您的用户案例很简单,我写了一个简单的例子。我不顺便测试它......
int sock = socket(AF_INET, SOCK_STREAM, 0) ;
struct sockaddr_in server_addr ;
bzero(&server_addr, sizeof(server_addr)) ;
server_addr.sin_port = htons(1025) ;
server_addr.sin_addr.s_addr = inet_addr("192.168.1.5") ;
server_addr.sin_family = AF_INET ;
int i = connect(sock, (const struct sockaddr *)&server_addr, sizeof(server_addr)) ;
if (i >= 0) {
char writeBuf[17] = "12345678901234567" ;
long w = write(sock, writeBuf, 17) ;
if (w > 0) {
char bufferRead[1024] ;
long r = read(sock, bufferRead, sizeof(bufferRead)) ;
if (r > 0) {
// success
}
}
}
close(sock) ;