在C中传递的服务器/客户端消息

时间:2012-03-24 15:20:09

标签: c linux client file-descriptor

我开发了一个连接到服务器的客户端。客户端向服务器写入内容,服务器读取并响应客户端。然后客户端读取服务器所说的内容并终止。我希望扩展这一点,允许客户端和服务器继续说话再说3次然后终止。我创建了一个for循环,在这个循环中我处理了代码在服务器和客户端上读写代码,但它最终是在无限循环中写入第一次输入的文本而不是要求用户输入新数据。

处理读/写的服务器代码如下:

int temp = 0;
char cha [10] = "helloworld";
while(temp = 3){

int rc;
char ch[100];


rc = read(newsockfd, &ch, 100);
    printf("Client sent: %s\n", ch ) ;      

    write(newsockfd, cha + temp, 100);

temp ++;
}


close(sockfd);
close(newsockfd);

这是处理读/写的客户端代码:

int temp = 0;
char cha[10] = "abcdefhijk";

while(temp = 3)       
{
int rc;
char ch2 [100];

rc = write(sockfd, cha + temp, 100);

    read(sockfd, &ch2, 100);
    printf("Server said: %s\n", ch2);

temp ++;
}


sleep(2);
close(sockfd);

另外,我在循环完成后关闭文件描述符。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

你能提供循环代码吗?你是否正在使用阻塞或非阻塞调用read()和write()? (也就是说,他们是否立即返回,无论数据是否可用(非阻塞),还是阻止直到某些东西可用(阻塞))?

更新: 如果您发布的代码是实际代码,则您的while循环出错。你检查

temp = 3

总是如此,因为你只是给temp分配'3'。你可能意味着

temp < 3