nik*_*kos 4 c sockets compiler-errors
我正在编写一个网络程序,在服务器部分,我想使用监听套接字接受来自多个客户端的连接.所以我声明了一个像这样的地址结构数组:
struct sockaddr_in* client;
Run Code Online (Sandbox Code Playgroud)
我使用malloc创建,稍后,接受我键入的连接:
newsock = accept(fd_skt, (struct sockaddr *)&client[i], &(sizeof(client[i])));
Run Code Online (Sandbox Code Playgroud)
我"lvalue required as unary '&' operand"从编译器那里得到了.任何人都可以弄清楚我做错了什么?
CB *_*ley 11
是的,您不能获取不是左值的东西的地址,即具有地址的对象.sizeof运算符的结果只是一个值,它不是具有地址的对象.
您需要创建一个局部变量,以便可以获取其地址.
例如
socklen_t addrlen = sizeof client[i];
newsock = accept(fd_skt, (struct sockaddr *)&client[i], &addrlen));
Run Code Online (Sandbox Code Playgroud)
struct sockaddr_in* client;顺便说一下,声明一个指针,而不是一个数组.要client用作数组,您需要在调用之前的某个时刻将其分配给动态分配的数组accept.我假设当你说"我使用malloc创建"时,这就是你正在做的事情.
或者,您实际上可以声明client为数组.
struct sockaddr_in client[MAX_CLIENTS];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13063 次 |
| 最近记录: |