套接字编程读写挂起

时间:2014-02-16 01:37:08

标签: c sockets unix

我正在尝试使用C(本地套接字)中的套接字来执行简单的服务器客户端程序。我设法让我的客户端成功写入服务器。然后服务器使用char运行一些函数来向客户端写入新的char。问题是在第一次写入和读取之后,客户端挂起等待服务器。服务器片段:

listen (serverCT, 5);

    while (1)
    {
        /*Accept a client connection*/
        clientCT = accept (serverCT, clientSockAddrPtr, &clientLen);

        if (fork () == 0)
        {
    printf ("Session Started");
    readCountry (clientCT);
    //printf ("main %s\n", rCountry);
    writeCapital (clientCT);
            close (clientCT);
            exit (0);
        }
        else
            close (clientCT);

    }

客户端片段:

do
{
    result = connect (clientCT, serverSockAddrPtr, serverLen);
    if (result == -1) sleep (1);
}
while (result == -1);
//Send Country to Server//
writeCountry (clientCT);
sleep (1);
readCapital (clientCT);
//readCurrency (clientCT);
close (clientCT);
exit(0);

阅读国家/地区并写好国家/地区的工作。但是当服务器尝试运行写入资本(服务器)时,它会挂起,并且只有在我终止客户端进程后才能继续。我在这里缺少什么?

##编辑 writeCapital函数:

writeCapital (int fd)
{
  char* capitalName = getCapital(rCountry);
    printf ("%s\n", capitalName);
write (fd, capitalName, strlen(capitalName) + 1);
}

0 个答案:

没有答案