我可以将客户端连接到4台服务器吗?我必须检查女巫是否有所作为。但是当我运行我的程序时,它适用于第一台服务器。对于下一个服务器,有错误:"传输端点已连接" 我的代码:
void contact(int socket, int argc, char **argv, node **server_threads)
{
pthread_t s;
int socketFd, newsockfd,i;
struct sockaddr_in serverAddr;
socklen_t clientlen = sizeof(clientAddr);
for(i=3;i<argc;i=i+2)
{
serverAddr = makeClientAddress(argv[i],atoi(argv[i+1]));
if(connect(socketFd,(struct sockaddr *) &serverAddr,sizeof(struct sockaddr_in))<0)
error("connect");
}
while(newsockfd = accept(sockfd, (struct sockaddr *) &(clientAddr), &clientlen))
{
printf("Server is active\n");
insert_at_end(server_threads, NULL,NULL,&s);
pthread_create(&s, NULL, (void*)connect_with_server,&sockfd);
}
void connect_with_server(void* arg){
int* sock=(int*)arg;
while(1)
{
if(read(sock,(char *)data,sizeof(int32_t[5]))<(int)sizeof(int32_t[5])) ERR("read:");
printf("Signal from server\n");
}
答案 0 :(得分:0)
您可以连接到许多服务器,但要做到这一点,您必须在客户端上使用不同的FD。将FD设置为服务器后,此FD将仅处理此连接。
你必须在所有FD开始时保持一个向量,并让你的程序在向量上运行。
并且您不需要在代码中使用接受功能,您必须只需连接到服务器,然后获取FD的连接并执行您想要的任何操作。