我正在尝试使用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);
}