【发布时间】:2015-08-20 07:52:13
【问题描述】:
目前在 C 中实现 TCP 套接字。使用 libcurl 我正在发送带有一些 XML 文件的 HTTP POST 请求。连接和传输工作正常。
现在,当我尝试在同一个会话中向服务器发送 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);
}
【问题讨论】:
-
说到“旧值”,是说buf的内容还是rec的内容?
-
我指的是rec.的内容