c++ - Tcp Socket recv 函数不起作用 c++

标签 c++ sockets tcp client-server tcpsocket

我正在处理的问题是,在成功发送数据后,我收到了来自客户的第一个响应,但在他输入详细信息但没有提交后收到了第二个响应。 你知道为什么会这样吗? 这是我的代码:

    sock->listenAndAccept();
    string url="HTTP/1.1 302 Found \r\nContent-Type: text/html; charset=utf8 \r\nContent-        Length:279\r\n\r\n<!DOCTYPE html><html><head><title>Creating an HTML Element</title></head><body><form name=\"input\" action=\"login.html\" method=\"get\">user name: <input type=\"text\" name=\"user\"><br>password: <input type=\"text\" name=\"password\"><input type=\"submit\" value=\"Submit\"></form></body></html>";
    sock->send(url.data(),url.length());
    char buffer[1000];
    sock->recv(buffer, 1000);
    cout<<buffer<<endl;
    sock->recv(buffer, 1000);
    cout<<buffer<<endl;

监听和接受函数:

TCPSocket* TCPSocket::listenAndAccept(){
    int rc = listen(socket_fd, 1);
    if (rc<0){
        return NULL;
    }
    size_t len = sizeof(peerAddr);
    bzero((char *) &peerAddr, sizeof(peerAddr));

    int connect_sock = accept(socket_fd, (struct sockaddr *)&peerAddr,(unsigned int *)&len);
    return new TCPSocket(connect_sock,serverAddr,peerAddr);
}

接收函数:

int TCPSocket::recv(char* buffer, int length){
    return read(socket_fd,buffer,length);
}

最佳答案

TCP 是面向流的协议(protocol)。您可能已经阅读了 first recv 中的所有消息。检查接收到的数据的大小,看它是否与预期的输出相匹配。

关于c++ - Tcp Socket recv 函数不起作用 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27896737/

相关文章:

python - 与 ZeroMQ 的双向通信异步

c++ - 如何使用在 C++ header 中声明的变量和函数

python - gmailR错误 "Only AF_INET sockets are currently supported on jython"

linux - Socat Raspberry Pi 串口转 TCP/IP 问题

sockets - 套接字操作是否在系统级并行执行?

python + libclang;来回迭代 : binding field comments to the field

c++ - 带有Ansi转义的C++ ctime

javascript - Node ,socket.io - 当新条目添加到新闻提要时更新客户端?

GCC 的 C++ 库问题

c# - C#发送TCP数据包