5. tcp기반 에코서버(echo_server) 에코클라이언트(echo_client) [+에코클라이언트 단점보완(?)]





******에코 서버/클라이언트 모델

1.에코서버(echo_server)

2. 에코클라이언트 (echo_client)

#gcc echo_server.c -o echo_server
#gcc echo_client.c -o echo_client
#./echo_server 9190 &
#./echo_client 127.0.0.1 9190
////////////////////
위에 있는 echo_client.c 코드의 문제점??
tcp는 연결지향 프로토콜로서 전송되는 데이터의 경계(boundary)가 없다. 그러다 보니.......
한번의 write()함수호출에서 "abcd"라는 문자열을 전송하더라도, 그 문자열이 반드시 하나의 패킷으로 구성되어 전달되지 않을 수 있다.
음.. 문자열 "abcd" 가 -> "ab", "c", "d" 이런 식으로 구성되어 3개의 패킷으로 전송될 수 있다는 말이다.
이런식.

tcp기반의 데이터 전송시 이러한 문제가 발생될 수 있다.
이전의 echo_client 경우에 read() 와 write() 함수를 한번씩만 호출하게 되어있다..
우리는 write() 함수 호출시 문자열값을 하나의 패킷으로 구성시켜 전송해야 제대로 동작하는걸 알아야 한다. tcp 는 보장해주지 않으니까..
그래서 수정한것이 아래의 코드 ~~





최근 덧글