데이터를 성공적으로 보낸 후 recv 클라이언트의 첫 번째 응답 있지만 두 번째 그의 세부 사항을 넣은 후 제출하지 않는 문제를 다루고 있습니다. 왜 이런 일이 일어 났는지 생각해보십시오.Tcp 소켓 recv 함수가 작동하지 않습니다. C++
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);
}
RECV 기능 :
int TCPSocket::recv(char* buffer, int length){
return read(socket_fd,buffer,length);
}
'Content-'와'Length :'사이의 공백은 무엇입니까? – immibis
또한 클라이언트를 작성 했습니까? 클라이언트가 응답을 보내는 것을 어떻게 알 수 있습니까? (나는 당신의 클라이언트가 웹 브라우저라고 의심하고 새로운 연결을 열어 본다.) [ – immibis
] 웹 브라우저를 클라이언트로 사용하고있다. – user3100708