C 每次连接都失败(也得到非法指令:4)
服务器使用端口49200初始化,其IP与客户端相同(在本地机器上测试)-192.168.1.179 我不明白为什么连接失败了。因为我在不同的函数中以相同的方式执行了connect(),只是在这种情况下连接是UDP,并且工作正常。是因为我试图连接到同一IP吗 我对这个很陌生。如果你需要更多的代码,请告诉我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:
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-您将得到错误的解释好的。谢谢你!我得到的文件名太长错误。这是什么意思?@Mysthtons()
在这里是正确的。请参阅手册页。你有理由不这么想吗?@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;
}