gpt4 book ai didi

c - TCP 套接字实现总是给出旧值

转载 作者:行者123 更新时间:2023-11-30 17:11:33 25 4
gpt4 key购买 nike

目前正在用 C 语言实现 TCP 套接字。使用 libcurl,我正在发送带有一些 XML 文件的 HTTP POST 请求。连接和传输工作正常。

现在,当我尝试在同一 session 中向服务器发送 2 个不同的 XML 文件时,我总是会得到我发送的第一个传输的值。这意味着我总是得到旧值,套接字不会返回在套接字上收到的新值。

Wireshark 向我展示了不同 XML 文件的传输情况。在建立每个 TCP 连接后,我是否需要以某种方式清理套接字?

这是我的服务器实现:

while (1) {
char buf[512];

connfd = accept(listenfd, (struct sockaddr*) NULL, NULL);
if (connfd == -1) {
perror("accept");
continue;
}

int rec;
rec = recv(connfd, buf, sizeof (buf), 0);
printf ("Receive val: %d\n", rec);

//DO STUFF

//Send back ACK
strcpy(sendBuff, "Received");
write(connfd, sendBuff, strlen(sendBuff));

close(connfd);
sleep(1);
}

最佳答案

收到第一个数据包后立即关闭 session 。这就是为什么您没有收到下一个数据包的原因。

您应该在单独的线程中处理每个传入连接,或者在关闭套接字之前以某种方式确保不再有传入数据到达

关于c - TCP 套接字实现总是给出旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32112524/

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