gpt4 book ai didi

c - sendto() - C 中的 UDP 单播

转载 作者:行者123 更新时间:2023-11-30 14:25:07 25 4
gpt4 key购买 nike

我有下面的函数,将消息作为UDP单播发送到next_hop(例如192.168.0.10)。当我编译代码时,我收到以下警告 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);

}

最佳答案

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*,具体取决于它在系统上的原型(prototype)设计方式。

关于c - sendto() - C 中的 UDP 单播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com