gpt4 book ai didi

c - 如何从c中的套接字读取回复?

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:49 25 4
gpt4 key购买 nike

我正在尝试编写一个执行以下操作的 TCP 客户端:

1. Establish TCP connection to webserver
2. Accept GET request command from user's console
3. Client should get a reply back from webserver after each GET request.

我很难满足第三个条件。我没有收到来自网络服务器的任何响应。

这是我的代码:

    s = connectTCP(host, service);
while (fgets(buf, sizeof(buf), stdin)) {
buf[LINELEN-2]='\r'; /* ensure catridge return */
buf[LINELEN-1]='\n'; /* ensure line feed return */
buf[LINELEN] = '\0'; /* ensure line null-terminated */
outchars = strlen(buf);
(void) write(s, buf, outchars);
printf("Start reading from socket...\n");
fflush(stdout);
while( (n = read(s, buf, LINELEN)) > 0) {
buf[n] = '\0'; /* ensure null-terminated */
(void) fputs( buf, stdout );
fflush(stdout);
}
}

最佳答案

HTTP 请求以两个 回车换行符(“\r\n\r\n”)序列终止。您构建请求的方式甚至不能确保它有一个。也许是这样的:

while (fgets(buf, sizeof(buf) - 3, stdin)) {
size_t outsz = strlen(buf);
if (outsz > 0 && buf[outsz - 1] == '\n')
outsz--;
strcpy(buf + outsz, "\r\n\r\n");
write(s, buf, outsz + 4);

关于c - 如何从c中的套接字读取回复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com