套接字编程中来自客户端的Getchar()

Getchar() from client in socket programming

我正在创建一个 运行 来自 raspberry pi 的 C 程序,它可以从已连接的客户端(其他 PC/Laptop)的 telnet 终端(putty)获取命令通过 TCP/IP 连接(套接字编程)并将这些命令处理到 运行 连接到 RPi 的电机。 这意味着我只需要在 RPi 中创建一个服务器代码 运行,而不是客户端代码。

我的问题是,是否有一种方法可以让我对来自客户端的输入使用 getchar()(应该只从服务器端编码)?可以和recv()一起使用吗?

我需要使用 getchar() 的原因是因为我想到了这个算法,它在客户按下回车键之前从客户那里读取每个字符,这让我能够区分客户的命令和参数。

提前致谢!

如果我没看错问题,你的问题是在客户按回车键之前读取他们的输入。

在那种情况下,答案是否定的。即使您绕过圈圈在服务器端使用 getchar 也不会更改客户端,这将导致您的问题。如果客户端只在用户按下 enter 时发送数据,那么服务器中的任何内容都无法解决这个问题。

如果这不是问题,并且您只想一次读取输入的一个字符,那么只需为 recv() 指定大小为 1。这将是非常低效的,但不像用户打字那么快。当后来的用户开始编写脚本并希望每秒发送许多命令时,它只会成为一个问题。注意:您可以使用 fdopen() 从套接字创建 FILE* 并使用 getc() 为您输入 libc 缓冲区,并有一个 getchar() 等价物。

无论如何 getchar() 都不是正确的方法。