디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

효율적인 소켙 통신 때문에 고민중인데 힌트좀 주실 횽 계십니까?

Lz(125.128) 2012.01.27 18:38:40
조회 110 추천 0 댓글 4


환경 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가 ㅇㅋ 님 다 보내셨근영 하고 함수 종료하는거 그런거 없습니까?
(소켙을 닫는다는 의미가 아니라)

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
300377 서버 상태 왜 이래? (210.113) 12.01.27 15 0
300382 서버 상태 왜 이래? (210.113) 12.01.27 14 0
300387 서버 상태 왜 이래? (210.113) 12.01.27 16 0
300375 서버 상태 왜 이래? (210.113) 12.01.27 16 0
300380 서버 상태 왜 이래? (210.113) 12.01.27 14 0
300385 서버 상태 왜 이래? (210.113) 12.01.27 13 0
300378 서버 상태 왜 이래? (210.113) 12.01.27 22 0
300383 서버 상태 왜 이래? (210.113) 12.01.27 14 0
300388 서버 상태 왜 이래? (210.113) 12.01.27 15 0
300376 서버 상태 왜 이래? (210.113) 12.01.27 16 0
300381 서버 상태 왜 이래? (210.113) 12.01.27 14 0
300386 서버 상태 왜 이래? (210.113) 12.01.27 13 0
300379 서버 상태 왜 이래? (210.113) 12.01.27 13 0
300384 서버 상태 왜 이래? (210.113) 12.01.27 17 0
300364 서버 상태 왜 이래? (210.113) 12.01.27 17 0
300369 서버 상태 왜 이래? (210.113) 12.01.27 16 0
300362 서버 상태 왜 이래? (210.113) 12.01.27 16 0
300367 서버 상태 왜 이래? (210.113) 12.01.27 20 0
300365 서버 상태 왜 이래? (210.113) 12.01.27 18 0
300370 서버 상태 왜 이래? (210.113) 12.01.27 19 0
300363 서버 상태 왜 이래? (210.113) 12.01.27 20 0
300368 서버 상태 왜 이래? (210.113) 12.01.27 15 0
300361 서버 상태 왜 이래? (210.113) 12.01.27 30 0
300366 서버 상태 왜 이래? (210.113) 12.01.27 23 0
300360 댓글봇 만들기 강좌같은거 있는곳 아는형있어? ㅇㅇ(112.159) 12.01.27 800 0
300359 서버 상태 왜 이래? (210.113) 12.01.27 19 0
300357 가비아는 도메인 백오더 성공률 낮지? 정신차리고갤질해라갤로그로 이동합니다. 12.01.27 176 0
300356 공룡책 7번째 개정판 사면 호구임? [1] ㅇㅁㅎ(110.47) 12.01.27 137 0
300355 개발자 떡실신 [2] (112.153) 12.01.27 147 0
300354 산학연 과제 안할 방법 없나요? [4] 엉덩국(175.113) 12.01.27 100 0
300353 메이플이랑 완전똑같은 머드(MUD)게임 [2] ㅇㄴㄹㅈ(110.12) 12.01.27 152 0
300352 진짜 SI 못해먹겠네... [4] 야요이갤로그로 이동합니다. 12.01.27 254 0
300351 이제 방금 해결햇다 로또로(218.39) 12.01.27 40 0
300350 프갤 활성화를 위해 봇을 만들거임 [2] [성대아싸]갤로그로 이동합니다. 12.01.27 126 0
300349 introduction to algorithms 가격이 ㅎㄷㄷ하네염,, [4] ㅋㄱ(183.96) 12.01.27 119 0
300348 비주얼스튜디오 디버깅하는데 에러가 나요... [6] 디버깅(218.49) 12.01.27 140 0
300347 내생 최초로 영화보다가 손발이 다 오그라드는영화는 이게 처음 Stan(220.244) 12.01.27 120 0
300346 카페24 하는거 어렵나요? [3] (118.37) 12.01.27 105 0
300345 토익 정말 싫다. [4] [성대아싸]갤로그로 이동합니다. 12.01.27 127 0
300344 컴파일 에러나는데 어캄 ㅠㅠ [3] zaitsev(27.115) 12.01.27 86 0
300343 자바에 cls없나? [4] zaitsev(27.115) 12.01.27 102 0
300342 유동닉 JD는 보거라 어슐러르귄갤로그로 이동합니다. 12.01.27 59 0
300341 사업하려그러는데 프로그래밍 질문!!!!!!!!!!! [2] =Neptune=갤로그로 이동합니다. 12.01.27 192 0
300339 '여기 접속안되면 인터넷 안되는거다'라고 할만한 사이트 뭐뭐 있음? [6] ㅇㅇㅇ(121.144) 12.01.27 147 0
300338 삼성에팔고싶은아이디어있을때 [1] ㅇㅇ갤로그로 이동합니다. 12.01.27 125 0
300336 이 손목시계 이쁘다 ㅂㅈㄷ(14.45) 12.01.27 129 0
300331 밑에글 보충 내용 글 다시 올려. 아이큐 문제 같다는 글. [5] 코드(175.120) 12.01.27 106 0
300329 코드 비교중인데 내 아이큐로는 안풀리네. 구원자 급구. 아이큐 문제 방식 [2] 코드(175.120) 12.01.27 141 0
효율적인 소켙 통신 때문에 고민중인데 힌트좀 주실 횽 계십니까? [4] Lz(125.128) 12.01.27 110 0
300327 형들 땡큐 [4] ㅇㅇㅎ(110.47) 12.01.27 107 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2