我试图在 C (Linux) 中写入 UDP 服务器。 我知道在 socket ()
函数中,我必须使用 SOCK_DGRAM
而不是 SOCK_STREAM
。
if ( (list_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0 )
{
fprintf(stderr, "ERROR");
}
但现在,当我尝试运行程序( 编译中没有错误) 时, 它表示 < code> listen () < () code > 中存在错误。 以下是调用 :
if (listen(list_s, 5) < 0)
{
fprintf(stderr, "ERROR IN LISTEN");
exit(EXIT_FAILURE);
}
你能找出问题所在吗?
int list_s; /* listening socket */
int conn_s; /* connection socket */
short int port; /* port number */
struct sockaddr_in servaddr; /* socket address structure */
if ( (list_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0 )
{
fprintf(stderr, "ERROR
");
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(port);
if ( bind(list_s, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 )
{
fprintf(stderr, "ERROR IN BIND
");
}
if ( listen(list_s, 5) < 0 ) // AL POSTO DI 5 LISTENQ
{
fprintf(stderr, "ERROR IN LISTEN
");
exit(EXIT_FAILURE);
}