我有一个C的TCP包接收程序如下:
static void tcpecho_thread(void *arg)
{
    int sockfd, new_fd;
    struct sockaddr_in my_addr;
    struct sockaddr_in their_addr;
    int sin_size;
    int numbytes;
    int port_numb = 8686;
    char buf[256];
    
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        printf("\n TCP socket open error!");
        close(sockfd);
    return;
    }
    else
        printf("\n TCP socket open ok!");   
   
    //initialize & bind
    my_addr.sin_family = AF_INET;
    my_addr.sin_port = htons(port_numb);
    my_addr.sin_addr.s_addr = INADDR_ANY;
    BZERO(&(my_addr.sin_zero),8);
    
    //bind socket
    if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)
    {
        printf("\n TCP socket bind error!");
        close(sockfd);
    return;
    }
    else
        printf("\n TCP socket bind ok!");   
    
    
    //create listen socket.
    if(listen(sockfd, 10) == -1)
    {
        printf("\n TCP socket listen error!");
        close(sockfd);
    return;
    }
    else
        printf("\n TCP socket listen ok!");       //wait fot connection
    while(1)
    {
        sin_size = sizeof(struct sockaddr_in);
        
        if((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
        {
            printf("\n New socket can not be created!");
            return;
        }
        else
            printf("\n New socket is created!");
            
        //Read info
        if((numbytes = recv(new_fd, buf, 256, 0)) == -1)
        {
            printf("\n Read data error!");
            return;
        }
        else
        {
            printf((char *)buf);
            printf("\n Read data!");
        }
        
        //Send info back
        if(send(new_fd, "ok!", strlen("ok!"), 0) == -1)
        {
            printf("\n Send Error!");
            return;
        }
        else
            printf("\n Send ok!");
            
        //close(new_fd);
    }
    //close(new_fd);
    close(sockfd);
}另外一端用程序发送TCP打包的字串,程序运行后发现每次在打印“Read data!”的地方只出现了8次就再也不出现了,socket连接是没有问题的,大家有没有好的建议,多谢!TCP包接收后一定要会复消息,我这样写不知道可以吗?