客户端通过套接字与许多服务器连接

时间:2014-06-10 15:02:29

标签: c sockets unix

我可以将客户端连接到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");
    }

1 个答案:

答案 0 :(得分:0)

您可以连接到许多服务器,但要做到这一点,您必须在客户端上使用不同的FD。将FD设置为服务器后,此FD将仅处理此连接。

你必须在所有FD开始时保持一个向量,并让你的程序在向量上运行。

并且您不需要在代码中使用接受功能,您必须只需连接到服务器,然后获取FD的连接并执行您想要的任何操作。