次の関数の何が問題になっていますか??
localhost で実行されている UDP サーバーがないため、エラーがスローされるはずです。
int openUdpSocket(int port) {
int sock,sin_size;
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
struct hostent *host;
host= (struct hostent *) gethostbyname((char *)"127.0.0.1");
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror("socket");
exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(server_addr.sin_zero),8);
sin_size = sizeof(struct sockaddr);
次の部分が問題を引き起こしています: -
int error = connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr));
if(error < 0){
printf("Connection error\n");
exit(-1);
}
if (verbose)
printf("UDP connected\n");
return sock;
}
出力:
udit@mylaptop:~/Desktop/benchmark$ ./a.out
UDP connected
TCP
同様の関数を作成しましたが、同じことがTCPで正常に機能していることに注意してください。つまり、TCPサーバーが実行されていない場合connection error
、およびTCPサーバーが実行されている場合に表示されますTCP Connected
上記の UDP クライアントは、将来、いくつかのステータス コードの形式で応答を受信する必要があります。SO、ここで bind() 関数を使用する必要がありますか??