Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS中的UDP套接字错误号_Ios_Sockets_Udp - Fatal编程技术网

iOS中的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)

我正在创建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);
}
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
)则是传递错误数据类型的红旗。