如何使服务器能够使用printf或fprintf而不是使用write系统调用向客户端发送消息?
我已经完成了我的服务器制作和工作,通过写入发送消息,但我宁愿使用fprintf。
例如,这不起作用:
newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, &clilen);
FILE *fp = fdopen(newsockfd, "w");
fprintf(fp, "test");
fflush(fp);
我知道有一个新问题。当我只有上面的代码它工作,我可以在我的浏览器中看到它,但是如果我添加读取(newsockfd,缓冲区,255)之后我会更长时间看到我的客户端发布的消息。
答案 0 :(得分:2)
在FILE
上运行的函数不太可能按照您的期望在处理套接字时执行,并且很可能会让您感到困惑。如果你想实现格式化,我建议你滚动自己的格式化函数来写入套接字:你需要做的就是创建一个可变参数函数,调用格式化vsprintf
并用{发送结果{1}}或write
...
答案 1 :(得分:0)
如何使用dup系统调用,所以将stdout重定向到套接字描述符..所以我认为你可以使用printf将你的东西放在socket中。