在收到换行符之前,Visual C ++中的recv不会返回任何数据

时间:2014-12-20 07:50:57

标签: c winsock recv

我在Visual C ++中遇到一个非常奇怪的问题,我在使用Winsock recv。我只是尝试一次接收1个字节的数据,但recv永远不会返回任何数据,直到换行符在流中。我没有做任何特别的事。我只是接受来自客户端的套接字连接,然后在它打开后调用recv。

我尝试用linux上的putty,teraterm和telnet连接它。在所有情况下,在我点击进入客户端之前,recv不会返回任何数据!首先我使用SDL_Net(因为我的程序使用SDL,我想要跨平台),我遇到了这个问题。我认为这是一个SDL_Net问题,所以我把它转换为只使用Winsock并仍然有同样的问题!

1 个答案:

答案 0 :(得分:2)

你的客户端可能没有发送任何内容,直到你输入,由于行缓冲 - stdio通常缓冲输入,直到它看到换行符(这允许你,除其他外)事情,在发送之前编辑你正在写的行。)

如果您对客户端有任何控制权,您可以将控制台置于" raw"模式,一旦发送就发送密钥。你如何做到这一点取决于平台。