-1
我試圖讓簡單的服務器代碼的工作:編譯簡單UDP服務器使用鐺遇到錯誤:使用未聲明的標識符的「SA」
/*
NAME: udpServer0
SYNOPSIS: udpServer0
DESCRIPTION: The program creates a datagram socket in the inet
domain, binds it to port 12345 and receives any message
arrived to the socket and prints it out
*/
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
int main(void)
{
int sd;
struct sockaddr_in server;
char buf[512];
int rc;
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(12345);
sd = socket (AF_INET,SOCK_DGRAM,0);
bind(sd, (SA *) &server, sizeof(server));
for(;;){
rc=recv (sd, buf, sizeof(buf), 0);
buf[rc]= (char) NULL;
printf("Received: %s\n", buf);
}
}
我得到了這些錯誤:
clang udp_server.c
udp_server.c:27:16: error: use of undeclared identifier 'SA'
bind(sd, (SA *) &server, sizeof(server));
^
udp_server.c:27:20: error: expected expression
bind(sd, (SA *) &server, sizeof(server));
^
2 errors generated.
待辦事項我需要一些標題來避免這個問題?
嘗試'struct sockaddr'而不是SA。後者不一定存在於任何系統頭文件中。 –
@ n.m。我是套接字編程的新手,你能提供更多關於它的細節嗎? – mko
'bind'需要'struct sockaddr *'類型的參數。 SA可能是這種類型的別名,它在您用作示例的程序中的某處定義。 –