gpt4 book ai didi

inet_addr 和 sendto 编译错误

转载 作者:行者123 更新时间:2023-11-30 18:03:34 26 4
gpt4 key购买 nike

我尝试编译这个在 http://www.abc.se/~m6695/udp.html 中找到的开源程序但它给出了错误消息。服务器程序将在Ubuntu上运行。

修改后的代码如下:

#include "stdafx.h"
//#include <windows.h>
#include <process.h>
#include <stdio.h>
#include "winsock2.h"
#pragma comment(lib, "Ws2_32.lib")
#define BUFLEN 512
#define NPACK 10
#define PORT 9980

#define SRV_IP "999.999.999.999"

void diep(char *s)
{
perror(s);
exit(1);
}

int main(void) {
struct sockaddr_in si_other;
int s, i, slen = sizeof(si_other);
char buf[BUFLEN];

if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1)
diep("socket");

memset((char *) &si_other, 0, sizeof(si_other));
si_other.sin_family = AF_INET;
si_other.sin_port = htons(PORT);
//inet_addr (const) char *SRV_IP);
if (inet_addr(SRV_IP, &si_other.sin_addr) == 0) {
//if (inet_aton(SRV_IP, &si_other.sin_addr) == 0) {
fprintf(stderr, "inet_aton() failed\n");
exit(1);
}

for (i = 0; i < NPACK; i++) {
printf("Sending packet %d\n", i);
sprintf(buf, "This is packet %d\n", i);
if (sendto(s, buf, BUFLEN, 0, &si_other, slen) == -1)
diep("sendto()");
}

closesocket(s);
return 0;
}

它给出了以下错误:

Error   1 error C2660: 'inet_addr' : function does not take 2 arguments [filepath]
Error 2 error C2664: 'sendto' : cannot convert parameter 5 from 'sockaddr_in *' to 'const sockaddr *' [filepath]

最佳答案

inet_addr 仅接受一个参数,我猜您获得的示例代码来自另一种系统。参见这里:http://linux.die.net/man/3/inet_addr并将调用更改为:

if ((si_other.sin_addr = inet_addr(SRV_IP) != INADDR_NONE) {

对于 sendto 调用,您可能只需将参数转换为编译器错误中给出的所需类型。

关于inet_addr 和 sendto 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260116/

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