客户端无法向服务器发送消息

时间:2015-03-16 19:30:42

标签: c linux sockets client server

我是C语言中的socket编程新手。 我试图创建一个能够连接到多个客户端的服务器。但是,

  1. 我的消息没有打印在服务器端。这意味着代码不会在提示符处停止"您想要发送什么?"

  2. 病房客户端的第二条消息没有响应交换机(选择) 我的Server.c看起来像

  3. 编辑1 我编辑了允许客户端发送邮件的代码。但是,服务器端在ACCEPT上停止"错误:错误的文件描述符"我无法解决。

    编辑2 我的客户端也在向前发送第二条消息,但我的服务器没有接收并打印出来,即使Accept上的错误消失了。

    -----
    listen(sockfd,5);
    clilen = sizeof(cli_add);
    int pid;
    
    while(1){
        newsockfd = accept(sockfd, (struct sockaddr *)&cli_add, &clilen);
        if (newsockfd < 0){
            error ("Error on accept");
            exit(1);
        }
    
        pid=fork();
        if (pid < 0) {
                    error("ERROR in new process creation");
                    exit(1);
            }
        if (pid==0){
                close(sockfd);
                //read the buffer from socket    
                bzero(buffer, 256);
                n = read(newsockfd, buffer,255);
                if (n<0){
                    error("Error reading");
                    exit(1);
                }  
                printf("The message : %s", buffer);
    
            -----
                bzero(buffer,256);
                n=write(newsockfd,tmparray,strlen(tmparray));
                if (n<0)
                     error("oops! can't write");
    
                exit(0);
            }else{
                close(newsockfd);
            }
    }
    

    和client.c是

        int choice;
        while(1){
        printf("what to do?\n1.Send\n2.Exit\n");
        scanf("%d",&choice);
        switch(choice){
            case 1:
            {
                bzero(buffer, 256);
                printf("What do you want to send? ");
                fgets(buffer,255,stdin);
                getchar();
                n=write(sockfd,buffer,255);
                if (n<0)
                    error("oops! can't write");
    
    
                bzero(buffer,256);
                n= read(sockfd, buffer, 255);
                if (n<0)
                    error("OOPS! can't read");
                printf("Received message : %s\n", buffer );
                break;
    
            }
            case 2:{
                return 0;
            }
        }
    }
    

0 个答案:

没有答案