환경 linux, c, tcp, 1:1 통신

client에서 server로 얼만큼의 data를 보낼지 정해지지 않았습니다
(최대 길이는 정했습니다)

8글자씩 2회로 나눠서 보낼 수도 있고
255글자 1회에 쭉 보낼 수도 있습니다


문제가 뭐냐하면
read나 recv 함수로 최대 길이 만큼 받도록 지정해놓으면
server가 최대 길이를 다 받기 전까지 계속 함수를 대기하는게 문제입니다

그래서 client가 send 함수를 2회 호출해도 server에서는 하나의 문자열로 취급하는게 문제이지요



그렇기 때문에 제가 방안을 생각해낸 것이 몇 가지 있습니다
1. client가 server에게 메세지를 보낼 때 1회 보내고 close하고
    또 socket을 열어서 또 보내고 이런 미친짓을 한다 -> 패스 말 그대로 미친짓


2. 일종의 자신만의 통신 규칙을 만든다
어차피 client가 500회 send(write) 함수를 호출하든 말든 server는 하나의 긴 문자열로 받게 되므로
server에서 들어오는 문자열을 알아서 잘 파싱하든지 8글자 단위로 쪼개든지 해서 해석한다

물론 8의 배수가 안되는 길이를 client가 보내려고 하면 알아서 패딩해야함
그리고 client도 알아서 보내고 싶은 메세지간 토큰 잘 끼어 넣어야함


3. 1글자씩 보낸다 ^^
write(socket_fd, (char*) chr, 1);
read(socket_fd,  buf, 1); 




원래 이런식으로 해야합니까...
그냥 send/write로 char* 문자열 보낼 때 거기에 일종의 EOF나 기타 등등 뭐 껴서 보내면
recv/read가 ㅇㅋ 님 다 보내셨근영 하고 함수 종료하는거 그런거 없습니까?
(소켙을 닫는다는 의미가 아니라)