我有一段很久以前在某个环境中工作的代码。我很确定这是一台 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,但我真的迷路了。
有任何想法吗?