0

UDPユニキャストとして(例:192.168.0.10)messageに送信する以下の機能があります。next_hopコードをコンパイルするpassing argument 2 of 'sendto' makes pointer from integer without a castと、行に対して次の警告が表示されif(sendto(s, *message, BUFSIZE, 0, &si_other, slen) == -1)ます。コードを修正するにはどうすればよいですか? 回答ありがとうございます。

void log_msg_send(char *message, char *next_hop){

struct sockaddr_in si_other;
int s, slen = sizeof(si_other);
int port_no = 3333;
char *nexthop;
unsigned short Server_port;
nexthop = next_hop;
Server_port = port_no;

if((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
    fprintf(stderr,"socket error");
    exit(1);
}

memset((char *) &si_other, 0, sizeof(si_other));
si_other.sin_family = AF_INET;
si_other.sin_port = htons(Server_port);

if(inet_aton(nexthop, &si_other.sin_addr) == 0){
    fprintf(stderr,"socket error");
    exit(1);
}

if(sendto(s, *message, BUFSIZE, 0, &si_other, slen) == -1){
    fprintf(stderr,"socket error");
    exit(1);
}

close(s);

}

4

1 に答える 1

2
char * message

意味:

(char *) message // message is a pointer-to-char

と:

char (*message) // *message is a char

したがって、を渡す必要がある場合はchar*、を使用しますmessage。そのバッファの最初の文字が必要な場合は、*message.


警告:

char * a, b; 

を作成aしますchar*が、スペースを入れるとbプレーンになります。char


struct sockaddr*5 番目の引数は、システムでのプロトタイプの作成方法によっては、手動で にキャストする必要がある場合があります。

于 2012-05-21T19:46:10.313 に答える