0
我需要關於設置3 UDP套接字的幫助。套接字是相同的遠程端口號的一部分,必須是61000,61001和61002. 我需要設置此套接字,因爲我應該在選擇功能上使用它們來發送和接收數據。設置多個UDP套接字
我嘗試了很多方法,但沒有人正常工作。 我知道,這是正常的程序設置一個插座:
int set_socket() {
/* get a datagram socket */
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock == SOCKET_ERROR) {
printf ("socket() failed, Err: %d \"%s\"\n", errno,strerror(errno));
exit(1);
}
OptVal = 1;
ris = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&OptVal, sizeof(OptVal));
if (ris == SOCKET_ERROR) {
printf ("setsockopt() SO_REUSEADDR failed, Err: %d \"%s\"\n", errno,strerror(errno));
exit(1);
}
/* name the socket */
Local.sin_family = AF_INET;
Local.sin_addr.s_addr = htonl(INADDR_ANY);
Local.sin_port = htons(local_port_number_UDP);
ris = bind(sock, (struct sockaddr*) &Local, sizeof(Local));
if (ris == SOCKET_ERROR) {
printf ("bind() failed, Err: %d \\n",errno);
exit(1);
}
/* assign our destination address */
To.sin_family = AF_INET;
To.sin_addr.s_addr = inet_addr(string_remote_ip_address_UDP);
To.sin_port = htons(remote_port_number_UDP);
}
如何設置所有3插槽用不同的遠程端口號?我必須爲每個套接字使用不同的struct
(Local和To)?
謝謝,對不起我的英文不好。
使用3個插座似乎有點浪費。大多數應用程序使用SINGLE套接字,只需將一些識別數據放入數據包中,以說明發生了什麼。例如「這是一個更新包,這裏是數據」。 「這是一個獲取數據包,這是請求」。 –
這不是爲什麼protocals被髮明出來的最後一個原因...... –
所以我需要如果我應該從3個不同的端口發送和接收? – Ciotto