使用Winsock的基本通信[英] Basic Communication using Winsock

本文是小编为大家收集整理的关于使用Winsock的基本通信的处理方法,想解了使用Winsock的基本通信的问题怎么解决?使用Winsock的基本通信问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

您好,我正在尝试使用winsock,但我遇到了这个问题,我的recv() 函数似乎没有接收到.

char buf[1000];{获取(缓冲区);if ((int)buf[0] == 0)发送(mysock, "\r\n", 2, 0);其他发送(mysock, buf, strlen(buf), 0);recv(mysock, buf, sizeof(buf), 0);printf(buf);} while (strcmp(buf,"~") != 0);


例如,我将此连接到谷歌.在我发送我的请求后,recv() 函数让我的程序卡住了,并且没有收到从服务器发回给我的数据包.有什么问题?

推荐答案

当连接到 HTTP 服务器时(我认为你在说 Google 时连接到了一个),你必须发送有效的请求才能得到答案.这包括一个尾随 CR-LF 对(参见 RFC 2616[^]).gets() 函数将删除输入的换行符.所以服务器接收到你的数据但是等待终止的 CR-LF 对来处理请求和应答.

但即使您在输入命令后添加发送 CR-LF 对,您的代码也可能会失败.您将输入字符串的长度作为缓冲区大小传递给 recv() 调用.您应该阅读有关 Winsock 的众多教程之一,以实现处理接收到的可变长度数据的接收函数.

您还应该始终检查 send() 和 recv() 调用的返回值.

本文地址:https://www.itbaoku.cn/post/1355890.html