我有一个像服务器一样工作的程序( listen()
s、 bind()
s 和 accept()
s 来自其他 IP 中相同程序的多个连接),同时像 UNIX 一样接受用户输入外壳。
用户输入的是命令,有一个命令 CONNECT
具有地址和端口号规范。
我想让它连接到多个主机,我想我必须为每个连接使用一个套接字。
当我在 CONNECT
上创建套接字时来自用户的请求,我如何管理这些套接字?
我应该使用全局 array
套接字并在建立连接时创建并向其添加套接字?
最佳答案
我假设您想在服务器中管理多个客户端。正确的?
因此,您必须全局获取一些预定义的套接字数组,然后为每个套接字提供服务
例如。
long accept_sock[10];//This should be global
//initilize it with -1 at entry point
while(1)
{
struct sockaddr client; /* for BSDish accept() call */
int clientsize;
clientsize = sizeof(struct sockaddr_in);
long sock ;
for(int i=0;i<10;i++)
{
if(accept_sock[i] == -1)
{
sock= accept(server_sock, &client, &clientsize);
if(sock != -1)
{
acepct_sock[i] =sock;
break;
}
}
}
for(int i=0;i<10;i++)
{
if(accept_sock[i] != -1)
{
//do process
}
}
}
关于c - 管理连接到多个主机的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779479/