我必须通过UDP连接到远程服务器,并向其发送预定消息以获取消息。我第一次尝试在TCP中使用它,它发挥作用,但在UDP中发送消息并在recvfrom()中听取回复后,我什么也得不到。任何人都可以告诉我这里可能是什么问题。从服务器接收UDP消息的问题
if ((bytes_sent = sendto(sockfd, UDP_MSG, strlen(UDP_MSG), 0, p->ai_addr, p->ai_addrlen)) == -1) {
perror("ClientUDP: Error sending data");
exit(1);
}
printf("Data sent %s\n", UDP_MSG);
len = sizeof(struct sockaddr_storage);
if ((bytes_recv = recvfrom(sockfd, bufudp, MAXDATASIZE-1, 0,(struct sockaddr*)&addr, &len)) == -1) {
perror("Error receiving in UDP");
exit(1);
}
printf("Bytes recv %d\n", bytes_recv);
bufudp[bytes_recv] = '\0';
printf("ClientUDP: Received\n %s \n",bufudp);
使用scanf()从键盘输入端口并且消息是字符串“HI”。
你确定服务器在两种协议上运行吗?你在控制服务器吗?如果是这样,你可以告诉消息是否首先到达服务器? – 2010-03-02 20:48:44
不,我不控制服务器,但它支持UDP。端口号中唯一的常量。我有没有办法确保邮件正确发送? – sfactor 2010-03-02 20:53:09
创建*连接* UDP套接字 - 如果操作系统接收到ICMP-Port-Unreachable,那么你会在接收时收到一个错误(但不是在发送时)。 – 2010-03-02 20:57:56