iOS中的UDP套接字错误号
我正在创建UDP套接字,并尝试发送到现有服务器,代码如下:iOS中的UDP套接字错误号,ios,sockets,udp,Ios,Sockets,Udp,我正在创建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)
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);
}
servAddr中的结构sockaddr\u;
memset(&servAddr,0,sizeof(servAddr));
servAddr.sin_family=AF_INET;
servAddr.sin\u addr.s\u addr=inet\u addr(此处为服务器IP地址);
servAddr.sinu端口=htons(端口);
int testSock=socket(PF_INET、SOCK_DGRAM、IPPROTO_UDP);
无符号字符字节数据;
int发送;
无符号int-servSize=sizeof(servAddr);
if((sent=sendto(testSock和byteData,1,0,(struct sockaddr*)和servAddr,(socklen_t)和servSize))<0){
NSLog(@“发送到服务器%d时出错”,错误号,已发送);
}
每次“sendto”返回-1时,errno设置为63。我以前从未遇到过这个错误
我可以完全自信地说,服务器、IP地址或提供的端口没有问题。它必须是客户端。63是“文件名太长”。在本例中,内核认为sockaddr太长,这是因为您将指针作为长度而不是实际长度传递。sendto()的最后一个参数不是指针,而是一个值。删除“&”。63是“文件名太长”。在本例中,内核认为sockaddr太长,这是因为您将指针作为长度而不是实际长度传递。sendto()的最后一个参数不是指针,而是一个值。删除'&'./p>而不是直接在这个层次上工作,我建议看一下,因为它使事情变得不那么复杂,而不是仅仅打印错误号,而是考虑使用一个描述错误的文本,而不是直接在这个级别上工作。我建议看一看,因为它使事情变得不那么复杂,而不是仅仅打印错误号,而是考虑使用一个描述错误的文本……而事实是,你试图给一个长度类型的指针(<代码>(SokkLynt)和ServSigs< /代码>)投下一个指针。是传递错误数据类型的红旗…而试图将指针强制转换为长度类型(
(socklen\u t)&servSize
)则是传递错误数据类型的红旗。