[英]Socket server in C (UDP) doesn't receive packets. How to do?
我已經在 C 中完成了一個 UDP 套接字服務器。只有當數據包被發送到 127.0.0.1 時,服務器才能正常工作。 我正在嘗試使用數據包發送方對其進行測試,並且我想在地址 192.168.231.54 處打開一個套接字。 無論如何,如果我在代碼中寫入這個地址,我會收到一個錯誤(“無法分配請求的地址”),並且對於每個與 127.0.0.1 不同的地址都會出現此錯誤。 我想打開一個到 192.168.231.54 的套接字,我想用 Packet Sender 將數據包發送到這個地址。
這是服務器代碼:
//*********SOCKET OPENING**************
int fd;
struct sockaddr_in serveraddr, cliaddr;
if ( (fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
perror( "socket failed" );
exit(EXIT_FAILURE);
}
memset( &serveraddr, 0, sizeof(serveraddr) );
memset(&cliaddr, 0, sizeof(cliaddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(50037);
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
if ( bind(fd, (const struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0 ) {
perror( "bind failed" );
exit(EXIT_FAILURE);
}
else{
perror("socket opened");
}
//Receiving data into hex_array array
char hex_array[lenght];
int len;
len = sizeof(cliaddr);
int n = recvfrom(fd, (uint8_t *)hex_array, lenght, NULL, ( struct sockaddr *) &cliaddr, &len);
//Printing of the received data on the socket
printf("START DEBUG:\n");
printf("%s\n", hex_array);
printf("END DEBUG.\n");
您綁定套接字的地址必須實際上是您計算機的 IP 地址。 你不能隨便選擇一個地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.