c++ - socket() 返回极大的整数值
问题描述
我正在开发一个 FTP 客户端。我试图应用套接字 id 来连接服务器。这是我的代码。在类中声明了许多变量。
int Client::connectServer() {
int ret = 0;
controlSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(controlSocket < 0 )
{
cout<<"Creating Control Socket Failed";
cout<<"err="<<strerror(errno);
system("pause");
return -1;
}
serverAddr.sin_family=AF_INET;
serverAddr.sin_addr.s_addr=inet_addr(ip_addr.c_str());
serverAddr.sin_port=htons(PORT);
memset(serverAddr.sin_zero,0,sizeof(serverAddr.sin_zero));
ret=::connect(controlSocket,(struct sockaddr*)&serverAddr,sizeof(serverAddr));
if(ret < 0)
{
cout<<"Control Socket Connecting Failed";
cout<<"err="<<strerror(errno);
system("pause");
return -1;
}
}
我使用几乎相同的代码两次调用了这个函数。但是其中一个不起作用(无法连接)。然后我使用相同的IP地址进行调试。结果表明,除了 的值之外,所有的东西都是一样的controlSocket
。
当controlScoket
没有被初始化时,它被重视3131961357
。然后它4294967295
在之后的值controlSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
。我认为它大于最大文件描述符?然而errno
是0
。另一方面,正常的 one 值1932
。
解决方案
推荐阅读
- google-cloud-platform - 在谷歌云计算引擎实例上运行冗长的脚本
- python - CS50 项目 1 搜索栏 问题:如何使搜索栏过滤条目以找到可能的条目并将它们显示在列表中?
- php - 我无法在 laravel 中的数据表中添加列
- c# - 如何通过索引或更好的方式访问另一个类中的泛型类方法?
- ruby-on-rails - 如何在 Rails 中只启动一次模块
- python - 从结构化的ndarray中提取连续的homogeneous-dtype ndarray
- pandas - 如何将单列的多个数据转换为pandas中的单行多列
- pandas - 如何使用fillna不传播最后一个有效观察但传播上周有效观察
- android - Android Studio有什么理由说没有安装HAXM?
- android - 从 Google sdk 29 更改为 30