상세 컨텐츠

본문 제목

네이버 게임게발자 질문/답변 서버 패킷 안보내질때

프로그래밍 관련/게임프로그래밍

by AlrepondTech 2020. 9. 13. 19:00

본문

반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 



서버 패킷이 계속 십히네요 ㅜㅜ

//문제점내용-------------------------------------------------------

여기서 클라이언트에서 캐릭터를 움직입니다.

그러면 이동 패킷이 가는데요..

게임내에서 검은화면에 받은 패킷을 다 표시합니다.

그러면 32좌표 단위로 제대로 오는데

다른 클라이언트(패킷 확인용)에서는 64단위가 있지않나.. 사이사이가 빠졌네요. 십히는거 같습니다

반대로 보내보아도 저러구요.

TCP로 보내고 받는데 왜저럴까요..

 

 

소스 일부 첨부할게요

*서버부분

받으면 모든클라이언트한테 내용을 뿌려줍니다

void OnRead( HWND hEdit, SOCKET sock, SOCKET *sockArray, int index, HWND hWnd )
{
 int   i;
 char  Msg[1024];

 if( SOCKET_ERROR != recv( sock, Msg, 1024, 0 ) )
 {
  for( i = 0; i < index; i++ ){
   if( SOCKET_ERROR == send( sockArray[i], Msg, strlen( Msg ) + 1, 0 ) )
   {
    wsprintf( Msg, "ERROR send with %d", WSAGetLastError() );
    MessageBox( g_hChatDlg, Msg, "DEBUG", MB_OK );
   }
   else
   {
     SendMsgToEdit( hEdit, Msg );
   }
  }
 }
}

받고 뿌리는 부분

  case FD_READ:
   // 모든 클라이언트에게 메시지를 전송한다
   
   OnRead( g_hEdit, (SOCKET)wParam, g_clntSock, g_index, g_hEdit );
   break;

 

 

 

 

 

*클라이언트 부분

 

  case FD_READ:
   if( SOCKET_ERROR == recv( g_Sock, Msg, 128, 0 ) )
    SendMsgToEdit( g_hEdit, "[알림] 네트웍 장애로 메시지를 받지 못했습니다" );
   else
   {
    SendMsgToEdit( g_hEdit, Msg );
   }
   break;

 

이렇습니다. 도움 부탁드립니다.

 

 

 

반응형

 

728x90

 

 

ps. 제가 공유기를 사용합니다.

공유기 아이피나 로컬아이피로하면 씹히는거 없이 잘 왔다갔다합니다.

하지만 dmz 설정하고 유동아이피로 해보니 이러네요..

공유기 탓일수도 있나요?

 

추가로 서버에서는 패킷을 다 받습니다. 보내는 부분에서 분명 클라이언트 개수만큼 보내는데 왜 이러죠;

//문제점내용 끝-----------------------------------------------

 

 

//답변-----------------------------------------------------

 

  대리                                                                                                   
2011.01.15 17:47

일단 기본적으로 데이터가 뭉쳐서 오거나 나뉘어서 오는 부분에 대한 처리가 안되어 있군요.

그거 처리하시면 될듯.

덧글 6 개                                                         | 등록순        
신고
  •   부활
    2011/01/15 17:54구체적으로 서버쪽인가요 클라쪽인가요??
  • 답글|신고
  •  
  •   maru0911il
    2011/01/15 17:56둘 다 입니다.
  • 신고
  •  
  •   부활
    2011/01/15 21:44받은데로 채팅콘솔에 표시하고 있습니다. 패킷 자체가 오지 않는 상황이네요 ㅜㅜ
  • 답글|신고
  •  
  •   maru0911il
    2011/01/15 21:10에궁.. 어디서 부터 설명을 해야 하나요.. 쩝..
    코드상으로 볼때 문자열을 주고 받는 방식으로 되어 있군요. 문자열은 맨 끝이 0일 경우 문자열의 끝으로 인식합니다. 실제로 받은 데이터 양을 확인해 보세요
  • 신고
  •  
  •   크로스
    2011/01/16 01:59이미 늦어버린 팁이겠지만.. 위에 마루님께서 말슴해 주신 문제때문에
    윈도우즈 네트워크 프로그래밍에서는 되도록 TCAHR로 쓰도록 권장되고 있습니다...
    거의 필수라고 보셔도 될듯..;;

    CHAR형은 참 묘한 놈이라 A B C 00 이렇게 되면 ABC 하고 끝나지만
    TChAR 형은 A 00 B 00 C 00 00 00 이런식으로 되어있지요.. (사이사이에 00이 더 있음) 유니코드입니다.
  • 답글|신고
  •  
  •   케이케이
    2011/01/16 22:15저는 그냥 사이즈를 고정시켜서 샌드,리스브 했어요

    union써서 패킷 전부 공유..
  • [출처] 서버 패킷이 계속 십히네요 ㅜㅜ (게임 개발자 네트워크 (jzsdn)) |작성자 maru0911il
  • 답글|신고

 

=================================

=================================

=================================

 

 



 

반응형


관련글 더보기

댓글 영역