来自已编译c.cgi的套接字连接
在linux上,我想通过编译的c.cgi程序(cgic)中的套接字连接到demon,该程序正在侦听传入的套接字连接。我知道服务器可以工作,因为它会响应“nc”命令。假设服务器是黑盒的,我无法更改它。在我的客户程序中,我有:来自已编译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
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);
谢谢你检查了服务器代码,这是我的问题。