Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自已编译c.cgi的套接字连接_C_Sockets_Cgi - Fatal编程技术网

来自已编译c.cgi的套接字连接

来自已编译c.cgi的套接字连接,c,sockets,cgi,C,Sockets,Cgi,在linux上,我想通过编译的c.cgi程序(cgic)中的套接字连接到demon,该程序正在侦听传入的套接字连接。我知道服务器可以工作,因为它会响应“nc”命令。假设服务器是黑盒的,我无法更改它。在我的客户程序中,我有: int sockfd; int len; struct sockaddr_in address; int result; char ch[] = "get=DeviceNo"; sockfd = socket(AF_INET, SOCK_STREAM, 0); addre

在linux上,我想通过编译的c.cgi程序(cgic)中的套接字连接到demon,该程序正在侦听传入的套接字连接。我知道服务器可以工作,因为它会响应“nc”命令。假设服务器是黑盒的,我无法更改它。在我的客户程序中,我有:

int sockfd;
int len;
struct sockaddr_in address;
int result;
char ch[] = "get=DeviceNo";

sockfd = socket(AF_INET, SOCK_STREAM, 0);

address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = 3042;
len = sizeof(address);
result = connect(sockfd, (struct sockaddr *) &address, len);
此时返回“连接被拒绝”错误。作为测试,我将netcat编译到.cgi程序中,该程序可以工作:

system("echo '-r get=DeviceNo' | nc localhost 3042");

我是否遗漏了一些东西,比如.cgi中如何处理套接字类?我应该做什么来尝试连接此套接字,或者我可以做什么来进一步排除我的问题?

在类型中使用
sockaddr\u时,您需要知道套接字地址
sin\u addr.s\u addr
和端口
sin\u port
必须按网络字节顺序。很可能你的主人是小恩迪安

因此,您需要使用
inet\u addr
返回正确的值,但对于套接字地址,您需要使用:

address.sin_port = htons(3042);

谢谢你检查了服务器代码,这是我的问题。