gpt4 book ai didi

c - sockaddr_in 变量的存储大小未知

转载 作者:太空狗 更新时间:2023-10-29 16:51:26 24 4
gpt4 key购买 nike

我有一段代码,很久以前在某个环境下工作过。我很确定它是一台 FreeBSD 机器,所以我得到了 FreeBSD 8.3,我正在尝试制作这个文件,但它不工作。

当我尝试编译它时,它会提示:

f.c: In function 'tcp'>
f.c:24: error: storage size of 'socket_stru' isn't known
f.c:29: error: 'IPPROTO_TCP' undeclared (first use in this function)
...

我环顾四周,发现这些都在 sys/socket.h 文件中指定。这是我的实际文件:

#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <sys/socket.h>
#include <unistd.h>


#include "f.h"

int tcp4 (in_addr_t ip, int port, int qsize )
{
struct sockaddr_in socket_stru; // line 24
socket_stru.sin_family = AF_INET;
socket_stru.sin_port = htons(port);
socket_stru.sin_addr.s_addr = ip;

int actual_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // line 29
...

我觉得我的代码以某种方式无法“读取”sys/socket.h 文件,因此它不知道 socket_stru 和 IPPROTO_TCP,但我真的迷路了。

有什么想法吗?

最佳答案

其他答案都不适合我。在sys/socket.h里面看了一眼之后文件,我什至没有看到 struct sockaddr_in 的定义.

对我有用的是 #include使用相应的 struct sockaddr_* 时出现以下文件之一输入:

  • 如果您使用 struct sockaddr_in , #include <netinet/in.h>
  • 如果您使用 struct sockaddr_un , #include <sys/un.h>
  • 如果您使用 struct sockaddr_ns , #include <netns/ns.h>
  • 如果您使用 struct sockaddr_ndd , #include <sys/ndd_var.h>

可以找到有关套接字编程头文件的更多信息here .

关于c - sockaddr_in 变量的存储大小未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154530/

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