套接字绑定不会返回 int
socket binding won't return an int
我的代码片段如下:
int descriptor = socket(AF_INET, SOCK_STREAM, 0);
if(descriptor < 0){
cerr << "Error establishing socket connection." << endl;
return -1;
}
int port = 3400;
struct sockaddr_in address;
char buffer[140];
address.sin_family = AF_INET;
address.sin_addr.s_addr = htons(INADDR_ANY);
address.sin_port = htons(port);
int size = sizeof(address);
if(bind(descriptor,(struct sockaddr*)&address,size) < 0){
cerr << "Error binding socket." << endl;
}
cout << "Waiting for connection on " << INADDR_ANY << " on port " << port << ends;
每当我尝试编译这个,我得到以下错误:
error: invalid operands to binary expression
('__bind<int &, sockaddr *, int &>' and 'int')
if(bind(descriptor,(struct sockaddr*)&address,size) < 0){
有人知道这是什么意思吗?bind()
应该返回一个整数,我是这么想的。我的导入是这样的:
#include <iostream>
#include <string.h>
#include <string>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
using namespace std;
谢谢!
using namespace std;
加上太多的头包含可能是这里的罪魁祸首-这就是为什么它在SO 而不是上一再重复使用它的原因。通过这样做,编译器看到bind
并认为您的意思是<functional>
中的std::bind
,而不是套接字的::bind
。所以要么做正确的事情,如果你真的需要包括所有的头和摆脱使用声明,或使用::bind
(编辑:或两者-使用::
来表明你想使用一些标准的API函数从全局命名空间)检查
相关文章:
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 返回 int 中可被 2 c++ 整除的所有数字的总和
- 如何正确重载 << 运算符以返回 int 值?
- 返回 int 时的分段错误
- 返回int数据类型v/s传递参考
- char*中存储的返回int值(0-255)给出了负值
- C++. 面试. 关于返回 int* 值问题的范围
- 调用从Java返回INT值的C 函数
- 使用 static int 返回 int&in 函数
- 从函数 CPP 返回 int 或 string.c_str() 时的两个不同的行为
- 超能力 NDK 安卓:返回 int 在"extern"块中成功,在调用函数中失败
- 如何使用 boost::bind 将返回 int 的函数转换为返回布尔值的函数
- 为什么在应该返回对象的方法中返回 int 是有效的
- main() 总是返回 int
- 从函数返回"int * const"
- C++函数向字符串变量返回int
- 从返回int的函数中获取char的正确方法
- 为什么这个阶乘函数返回int而不是double
- 为什么 isnan、isinf 和 isfinite 返回 int 而不是布尔值
- 返回 std::string 的函数在没有 return 语句的情况下崩溃,这与返回 int 而不返回语句的函数不同