Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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

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++ 连接到套接字失败-错误号88(cpp)_C++_Sockets - Fatal编程技术网

C++ 连接到套接字失败-错误号88(cpp)

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)); 在写入某些字段之前,应将整个结

我正在尝试创建服务器/客户机通信,但连接功能出现故障,错误号为88。我检查了socketfd是否有效(因为此errno表示我正在尝试对非套接字对象执行套接字操作)

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
}