기본 TCP 클라이언트/서버 프로그램이 있습니다.내 TCP 코드에서 읽기/쓰기가 작동하지 않습니다.
나는 클라이언트와 읽고 쓰는 서버 모두에 메소드가 있습니다. 그것은 완벽하게 내가 그것을 처음 실행할 때 작동하지만, 다시 실행하면 그것은 아무것도 읽지 않습니다 (이 루프에서의). 서버
void printout(char buffer[], int sockfd) {
bzero(buffer, 256);
n = read(sockfd, buffer, 256);
printf("%s\n", buffer);
n = read(sockfd, buffer, 256);
printf("%s\n", buffer);
n = read(sockfd, buffer, 256);
printf("%s\n", buffer);
n = read(sockfd, buffer, 256);
printf("%s\n", buffer);
n = read(sockfd, buffer, 256);
printf("%s\n", buffer);
}
A2에서
void printout(int newsockfd, char buffer) {
n = write(newsockfd, a2, 256);
n = write(newsockfd, a3, 256);
n = write(newsockfd, a4, 256);
n = write(newsockfd, a5, 256);
n = write(newsockfd, a6, 256);
}
를, A3, a4, a5 및 a6은 문자열입니다. 처음 실행하면 모든 것을 올바르게 인쇄합니다. 두 번째로 아무 것도 출력하지 않고 빈 줄 하나만 인쇄합니다. 버퍼가 무엇인지 알아보기 위해 테스트했을 때, 나는 그 버퍼를 ""얻었다. 문제가 무엇인지 또는 어떻게 해결할 수 있는지 알고 있습니까?
각'write' 호출 후에'n'의 값을 출력하고'read'를 호출 할 때마다'n'의 값을 출력 해 봅니다. 'n'이 0보다 작 으면'errno'의 값을 출력하십시오. –
코드는'read'의 반환 값을 무시하므로 얼마나 많은 바이트를 받았는지 알 수 없습니다. 또한 네트워크를 통해 수신 된 임의의 바이트를 C 스타일 문자열로 처리 할 수 없습니다. –
모든 호출 후에 n이 256이라고 ... –