-1

私は単純なサーバーコードを機能させようとしていました:

/*
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.

この問題を回避するには、ヘッダーが必要ですか?

4

1 に答える 1

0

コメントにあるように、(SA *) の代わりに (struct sockaddr *) が必要です。

SA は typedef である必要があります。ソケット プログラミングの最適なガイドが必要な場合は、http: //beej.us/guide/bgnet/output/html/multipage/index.htmlを参照してください。

于 2012-11-01T04:35:22.080 に答える