【发布时间】:2012-05-28 13:03:37
【问题描述】:
我正在创建一个 UDP 套接字,并尝试在下面的代码中发送到现有服务器:
struct sockaddr_in servAddr;
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = inet_addr(SERVER IP ADDRESS GOES HERE);
servAddr.sin_port = htons(port);
int testSock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
unsigned char byteData;
int sent;
unsigned int servSize = sizeof(servAddr);
if((sent = sendto(testSock, &byteData, 1, 0, (struct sockaddr *)&servAddr, (socklen_t)&servSize)) < 0){
NSLog(@"Error sending to server: %d %d", errno, sent);
}
每次“sendto”返回-1,errno设置为63。我以前从来没有遇到过这个错误。
我可以完全自信地说,服务器或提供的 IP 地址或端口没有任何问题。它必须是客户端。
【问题讨论】:
-
我建议不要直接在这个级别上工作,而是查看Cocoa AsyncSocket,因为它使事情变得不那么复杂。
-
考虑使用
strerror来获取描述错误的文本,而不是仅仅打印错误号。