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)