gpt4 book ai didi

c - TCP套接字: Server/Client code structure

转载 作者:行者123 更新时间:2023-11-30 18:03:49 25 4
gpt4 key购买 nike

假设我想要一个 C 程序来执行此操作:1. 用户将使用输入字符串运行客户端,例如“abc”2. 服务器会获取字符串并将其大写,然后返回'ABC'3. 客户端不会断开连接,但可以在命令行输入更多字符串来获取结果。4. 可以同时连接多个客户端(5个以下)。

服务器的代码结构是什么样的?这是我得到的:

master_socket = socket();
bind();
listen();

while(true)
{
**int newsockfd = accept();
if (newsockfd < 0)
//server keeps coming to here
continue; //no new connection
else
{**
int pid = fork();

if (pid == -1) { /* fork() failed */
perror("fork");
exit(EXIT_FAILURE);
}
//parent
if (pid > 0)
{
close(newsockfd);
waitpid(pid, NULL, WNOHANG);
}
else
{
close(master_socket);
//receive input string
receive();
modify();
//send back string
send();

}
//close(newsockfd); **//not sure where to put**

}

}

特别是,我不知道在哪里放置 close(newsockfd) 以及在这种情况下如何使用 Accept。

服务器现在只是继续前进。当有新的连接时,它会正确响应。但它会忽略任何想要再次发送内容的现有客户端。

因此用户可以输入第一个字符串,但用户的第二个字符串无法到达服务器。但如果我打开另一个终端,并尝试再次连接到服务器,它仍然可以工作。

非常感谢。

最佳答案

子进程必须循环处理输入,并且不能返回到accept():在EOS,它必须关闭接受的套接字并退出。

关于c - TCP套接字: Server/Client code structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8024199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com