c - 在 C 中使用套接字时的字符串比较

标签 c sockets strcmp

我似乎找不到解决方案,大多数人都有以下问题,但这对我不起作用。

int sock_fd;
int new_fd;
int rc;
char recv_client_msg[100];

rc=read(new_fd, recv_client_msg, sizeof(recv_client_msg));

if(rc>0)
 {
   if(strcmp(recv_client_msg, "s1p1")==0) {printf("s1p1\n"); }
   if(recv_client_msg[0]=="s") {printf("m\n");}
 }     

我的套接字功能齐全。当客户端打开时,如果我按“m”键,程序会在本地终端上打印“m”。 但是,当我打开客户端时键入“s1p1”时,我想在本地终端上打印“s1p1”。 然而,尽管阅读了前面的示例并且编译成功,但这并没有发生。

如有任何提示,我们将不胜感激

我的理论是,这可能与程序成功处理第一个字符“s”有关,但是当我输入“1”时,第一个“s”被“1”覆盖,而不是占用第二个槽在字符串中。

最佳答案

一些注意事项:

  1. 要通过网络读取/发送数据,您需要诸如this之类的函数。和 this 。因为发送和接收并不总是发送/接收您告诉他们的数量。

  2. 您似乎使用了未初始化的变量 new_fd,这看起来不太好。

  3. 最后,在确保已收到所有发送的数据后(使用我在 (1) 中提到的方法),比较字符串不是问题 - 您可以仅使用 strcmp ,假设字符串以 null 结尾。

关于c - 在 C 中使用套接字时的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31001278/

相关文章:

c - 如何在我的源代码或系统库中获取一个函数的 cpu 周期和执行时间

c - 为什么这两个程序在 ANSI C 中表现不同?

c - 我们如何知道 C 中的字符串元素未初始化?

c# - 传递给套接字监听器的参数无效

C++ - strcmp() 不能正常工作?

c - 在c中,如果我有 char *const* 指针,我如何访问每个元素?

php - Web 应用程序的超快速数据库访问 - SQL 或 NoSQL,解释型 PHP 或编译型 C?

windows - 使用临时端口的 Boost::asio UDP 广播

java - ServerSocket中setReuseAddress的作用是什么?

c++ - strcmp 总是在将字符串与反向进行比较时返回 0