게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
소켓플밍(윈속) 질문드려요 ㅠㅠ
게시물ID : programmer_1907짧은주소 복사하기
작성자 : 똥코딩
추천 : 0
조회수 : 285회
댓글수 : 0개
등록시간 : 2014/03/17 21:04:37
열혈강의 tcp/ip 챕터5에 있는 소스 일부 입니다.
 
for(i=0; i<5; i++)
 {
  opndCnt=0;
  hClntSock=accept(hServSock, (SOCKADDR*)&clntAdr, &clntAdrSize);
  // accept함수 1번째 인자로는 응답받는 서버소켓, 2번째인자는 요청된 클라이언트의 주소를 저장할 변수의 주소값, 3번째인자는 2번째인자의 크기를 바이트단위로 전달, 종료후에는 2번째인자에 채워지는 주소정보의 크기가 저장됨.
  recv(hClntSock, &opndCnt, 1, 0); // 참고 int opndCnt
  
  recvLen=0;
  while((opndCnt*OPSZ+1)>recvLen) //참고 #define OPSZ
  {
   recvCnt=recv(hClntSock, &opinfo[recvLen], BUF_SIZE-1, 0);
   recvLen+=recvCnt;
  }
  result=calculate(opndCnt, (int*)opinfo, opinfo[recvLen-1]);
  send(hClntSock, (char*)&result, sizeof(result), 0);
  closesocket(hClntSock);
 }
 
tcp는 산탄총마냥 데이터를 지 멋대로 잘라서 보내잖아요? 그래서
위 코드의 while문 안쪽이 그 데이터를 붙이는 부분인건 알겠는데..
도대체 그 위 recv(빨간부분) 왜 하나요? 때문에
while문의 조건부분의 opndCnt얘 도대체 왜 필요한가요?
물론 데이터 수신을 위한 부분인것은 알겠지만 왜? opndCnt*OPSZ+1 인지?
이론만 쭉쭉 스킵하면서 보아서 소스 첨으로 봤는데 ㅠㅠ
 
--------------------------
 
위와는 별개로
올해 군대를 가려하는데 (크흑..)
공군 전자계산 어떤가요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호