[英]Why UDP socket doesn't receive udp traffic from nc -u host port?
int main(int argc, char *argv[])
{
struct sockaddr_in src = { .sin_family=AF_INET, .sin_addr.s_addr=INADDR_ANY, .sin_port=htons(90) };
int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
bind(fd, (struct sockaddr *)&src, sizeof(src));
char buf[1024];
ssize_t res = recvfrom(fd, buf, sizeof(buf), 0, NULL, 0);
printf("res=%zi\n", res);
return 0;
}
編譯並執行此程序之后。 在另一個終端上執行
nc -u localhost 90
測試自從我使用INADDR_ANY以來,我是否確實從“任何接口”接收到一些udp流量。 但是程序只是掛起。 我想念什么?
端口90小於1024,因此進程需要特權才能將套接字綁定到該端口。
您有兩種選擇:
人們應該考慮測試bind()
的結果bind()
通常與其他任何系統調用一樣),以輕松檢測到這種情況。
我沒有通過nc
提供足夠的數據。 我面臨兩種情況:
nc -u localhost 1025
該程序正在掛起...。顯然是因為我沒有傳遞任何東西,除了套接字未收到的'\\n'
。
nc -u -v localhost 1025
我仍然只傳遞'\\n'
但是在這種情況下套接字正在接收它。
在這兩種情況下,寫一堆字符都是可行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.