比较从C中的套接字接收的字符串数据

我有关于套接字的问题。 我有这个代码:

while(bytes = recv(sClient, cClientMessage, 599, 0)){ 

这会将它收到的消息放入cClientMessage中,并且消息始终为“Message”。 我如何制作if语句,如if(cClientMessage == "Message"){//do func} 。 现在这段代码不会执行我想要的function。 我认为这是因为它没有收到正确的信息。 有人能帮我吗?

尝试:

 if( strcmp( cClientMessage, "Message")) == 0 ) { // do something } 

编辑,遵循strager的建议:

更好的解决方案,不依赖于接收的数据为空终止是使用memcmp:

 if( memcmp( cClientMessage, "Message", strlen( "Message") )) == 0 ) { // do something } 

首先,您编写的代码中存在错误:

 while(bytes = recv(sClient, cClientMessage, 599, 0)){ 

这是错误的,因为如果存在套接字错误,并且您的代码将导致无限循环,则recv将返回非零值。 特别要检查> 0

 char cClientMessage[599]; while((bytes = recv(sClient, cClientMessage, sizeof(cClientMessage), 0)) > 0) { if(strlen("Message") == bytes && !strncmp("Message", cClientMessage, bytes)) { //cClientMesssage contains "Message" } } if(bytes == 0) { //socket was gracefully closed } else if(bytes < 0) { //socket error occurred } 

您所做的问题:cClientMessage ==“Message”是如果您将char *与字符串文字或char []与字符串文字进行比较,那么您将比较指针地址而不是实际内容。