간단한 네트워크 클라이언트를 만들고 있습니다. 그것은 텍스트 파일을 읽고 각 줄을 네트워크에 저장합니다. 맨 끝에는 수신 회선을 읽고 CSV 텍스트 회선으로 응답하는 서버가 있습니다.두 번째 소켓 쓰기가 네트워크에 전송되지 않는 것 같습니다.
내가 테스트를 위해 사용하고 나가는 파일은 간단하다 :
6216448319, 리처드 닉슨에서
6216448319, 리처드 닉슨, 로그 "에 기록됩니다."
응답이 있어야 할 로그 아웃 '로그 아웃'이 뒤 따른다.
첫 번째 줄은 완벽하게 처리되지만 두 번째 줄이 소켓에 쓰여진 것처럼 보이지만 서버는 들어오는 메시지를 전혀 보지 못합니다. 나는 문서와 다양한 튜토리얼을 따라 가려고 최선을 다했으나 본 적이없는 것은 같은 행동을 보이는 것으로 보인다. 내가 뭘 놓치고 있니?
각 행을 자체 파일로 보내면 서버가 올바르게 응답합니다. 당신은 스트림의 말을 무시하고
OUT(29): [6216448319,Richard Nixon,Log In]
Socket is connected for write.
Waiting for response...
Socket is connected for read.
IN(12): ["Logged in."]
Socket is connected for EOL
Read 13 from socket. S
Socket is connected for EOL
Read 10 from socket.
Socket is connected for EOL
Read -1 from socket.
OUT(30): [6216448319,Richard Nixon,Log Out]
Socket is connected for write.
Waiting for response...
Socket is connected for read. IN(null): [null]
Socket is connected for EOL
Read -1 from socket.
마지막 제안이 열쇠였습니다.프로토콜 자체는 없었지만 레거시 제약으로 인해 서버는 각 응답 후에 소켓이 닫히고 각 전송 전에 새 소켓이 만들어지기를 기대했습니다. –
아니요. 서버는 '예상'이 아니라 각 응답 후에 소켓을 닫는 * 것입니다. 이것이 클라이언트에서'read()'가 -1을 리턴 한 이유입니다. – EJP