728x90

소켓 기반에서의 표준 입출력 함수 호출

1. 소켓 생성

2. 파일 디스크립터 -> FILE * 변환

3. 표준 입출력 함수 사용

4. 함수 호출 후 fflush 함수 호출로 버퍼 비움

int main(int argc, char *argv[])
{
	int sock;
	char message[BUF_SIZE];
	int str_len;
	struct sockaddr_in serv_adr;
	FILE * readfp;
	FILE * writefp;
	
	sock=socket(PF_INET, SOCK_STREAM, 0);   
	...;

	readfp=fdopen(sock, "r");		// fd -> FILE*
	writefp=fdopen(sock, "w");		// fd -> FILE*

	while(1) 
	{
		fputs("Input message(Q to quit): ", stdout);
		fgets(message, BUF_SIZE, stdin);
		if(!strcmp(message,"q\n") || !strcmp(message,"Q\n")) {
			break;
		}
        
		fputs(message, writefp);		// 전송
		fflush(writefp);				// 버퍼 비움
 		fgets(message, BUF_SIZE, readfp);		// 수신
		printf("Message from server: %s", message);
	}	
	fclose(writefp);
	fclose(readfp);
	return 0;
}
728x90

+ Recent posts