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 每次连接都失败(也得到非法指令:4)_C_Sockets_Network Programming - Fatal编程技术网

C 每次连接都失败(也得到非法指令:4)

C 每次连接都失败(也得到非法指令:4),c,sockets,network-programming,C,Sockets,Network Programming,服务器使用端口49200初始化,其IP与客户端相同(在本地机器上测试)-192.168.1.179 我不明白为什么连接失败了。因为我在不同的函数中以相同的方式执行了connect(),只是在这种情况下连接是UDP,并且工作正常。是因为我试图连接到同一IP吗 我对这个很陌生。如果你需要更多的代码,请告诉我 in connect to host server_ip in connect_to_host: 192.168.1.179 server_port in connect_to_host:

服务器使用端口49200初始化,其IP与客户端相同(在本地机器上测试)-192.168.1.179

我不明白为什么连接失败了。因为我在不同的函数中以相同的方式执行了connect(),只是在这种情况下连接是UDP,并且工作正常。是因为我试图连接到同一IP吗

我对这个很陌生。如果你需要更多的代码,请告诉我

in connect to host 
server_ip in connect_to_host: 192.168.1.179 
server_port in connect_to_host: 49200 
remote server port after htons: 12480 
connect error 
[LOGIN:ERROR] 
[LOGIN:END] 
Illegal instruction: 4
打印自己的错误消息而不是
errno
perror()
strerror()
给您的错误消息完全是浪费时间。不要那样做。每次系统调用失败时,必须打印或记录或返回实际错误

很明显,“非法指令”问题不可能来自此代码,因为您在它退出后打印了更多消息

打印自己的错误消息而不是
errno
perror()
strerror()
给您的错误消息完全是浪费时间。不要那样做。每次系统调用失败时,必须打印或记录或返回实际错误


很明显,“非法指令”问题不可能来自此代码,因为您在它退出后打印了更多的消息。

do perror而不是printf-您将得到错误的解释OK。谢谢你!我得到的文件名太长错误。这是什么意思?@Myst
htons()
在这里是正确的。请参阅手册页。你有理由不这么想吗?@EJP-我不确定,因为地址结构是由本地API使用的,我不确定它在通过网络发送之前是否经过翻译。。。好的,我在
man
页面中找到了它,对此表示抱歉。认真对待编译器的警告。使用perror而不是printf-您将得到错误的解释好的。谢谢你!我得到的文件名太长错误。这是什么意思?@Myst
htons()
在这里是正确的。请参阅手册页。你有理由不这么想吗?@EJP-我不确定,因为地址结构是由本地API使用的,我不确定它在通过网络发送之前是否经过翻译。。。好的,我在
man
页面上找到了,很抱歉。认真对待编译器的警告。好的。这有点奏效了。现在我收到了“连接被拒绝”。似乎服务器从未执行侦听部分,我无法解释原因(我建议你调试它,从我最后一段第二段中的建议开始。是的。这样做。非常感谢!虽然gdb和Mac都有这样的问题,我不确定macOS 10.13是否有修复程序,但我没有足够的时间来完成这项任务来尝试修复它。所以尝试在每行之后用打印语句进行调试。哦。这个任务,一个多客户端聊天应用程序是我第一次用C:PNB编写代码。编译器必须就上面的问题给你一个警告。不要忽略它们。好的。这算是成功了。现在我得到了“连接被拒绝”。似乎服务器从未执行侦听部分,我不知道为什么(我建议你调试它,从我最后一段第二段中的建议开始。是的。这样做。非常感谢!虽然gdb和Mac都有这样的问题,我不确定macOS 10.13是否有修复程序,但我没有足够的时间来完成这项任务来尝试修复它。所以尝试在每行之后用打印语句进行调试。哦.这个任务,一个多客户端聊天应用程序是我第一次用C:PNB编写代码。编译器必须就上面的问题给你一个警告。不要忽略它们。
in connect to host 
server_ip in connect_to_host: 192.168.1.179 
server_port in connect_to_host: 49200 
remote server port after htons: 12480 
connect error 
[LOGIN:ERROR] 
[LOGIN:END] 
Illegal instruction: 4
if(connect(fdsocket, (struct sockaddr*)&remote_server_addr, &len) < 0) {
    printf("%s\n", "connect error");
    return -1;
}
if(connect(fdsocket, (struct sockaddr*)&remote_server_addr, len) < 0) {
    perror("connect error");
    return -1;
}