C++ 连接到套接字失败-错误号88(cpp)
我正在尝试创建服务器/客户机通信,但连接功能出现故障,错误号为88。我检查了socketfd是否有效(因为此errno表示我正在尝试对非套接字对象执行套接字操作)C++ 连接到套接字失败-错误号88(cpp),c++,sockets,C++,Sockets,我正在尝试创建服务器/客户机通信,但连接功能出现故障,错误号为88。我检查了socketfd是否有效(因为此errno表示我正在尝试对非套接字对象执行套接字操作) intmain(intargc,char*argv[]) { //有效性检查 如果(argc!=有效的参数值){ std::cout我认为这部分导致了缓冲区溢出: memset(&(server_address.sin_zero), '\0', sizeof(server_address)); 在写入某些字段之前,应将整个结
intmain(intargc,char*argv[])
{
//有效性检查
如果(argc!=有效的参数值){
std::cout我认为这部分导致了缓冲区溢出:
memset(&(server_address.sin_zero), '\0', sizeof(server_address));
在写入某些字段之前,应将整个结构归零:
struct sockaddr_in server_address;
// server_address initialization.
memset(&server_address, 0, sizeof(server_address));
server_address.sin_family = AF_INET;
语句的优先级
sockfd = socket(AF_INET, SOCK_STREAM, 0) < 0
断开的管道通常意味着远程对等方关闭连接。您确定您的服务器代码正常吗?也许它只是执行类似的操作
int main()
{
...
listen();
accept();
return 0;//procees exits and therefore brakes connection
}
如果您有可用的Boost,或者能够下载它,我强烈建议您使用Boost Asio进行套接字编程。errno
中的错误代码实际上取决于平台。请告诉我们哪个平台(操作系统)您可以使用。并使用例如strerror
从错误代码中获取一个可打印的字符串。对不起,操作系统是linux。好的,我按照您告诉我的那样更改了它,但它仍然卡住了-管道断裂..我更改了它的可能副本,但仍然错误编号88:/好的,我按照您告诉我的那样更改了它,它仍然卡住了-管道断裂..@MichalShalom:好的,就是这样。
sockfd = ((socket(AF_INET, SOCK_STREAM, 0)) < 0)
(sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0
int main()
{
...
listen();
accept();
return 0;//procees exits and therefore brakes connection
}