|
int strLen;
char nameMessage[NAMESIZE + BUFSIZE]; // 뭐 네임싸이즈 가 뭔진 모르겠지만
// (char *)nameMessage을 다르게 써야하는지요
strLen = recv( sockTemp, (char *)nameMessage, NAMESIZE + BUFSIZE - 1, 0 );
char nameMessage[(NAMESIZE + BUFSIZE)];
이 문장은
char *nameMessage = (char*) malloc((NAMESIZE + BUFSIZE));
로 바꿀수 있는데요
왜 이 이야기를 하냐면
recv펑션의 인자들은 SOCKET, char*, int, Flag);이죠?
char*를 char*로 변환시키면 -_-; 안댄다는거지여~
그냥 nameMessage라고 해주시면되구용
젤 위험하게 보이는게 NAMESIZE + BUFSIZE -1 이라는 부분이네요
NAMESIZE + BUFSIZE - 1만큼 받으라고 해도 그만큼 받지 못하는 경우의 대비는 어떻게 하시는지요?
^^ 힘내세요~
구리구리 님이 쓰신 글 :
: 네 수야님 감사합니다
: 그런데 받는부분에서 제가 뭘 잘못햇는지 잘 안되네요
:
: 보내고 받는 부분에 둘다 아래와 같은 구조체가 있습니다
: struct MY_STRUCT{
: int a;
: char b[100];
: };
: typedef MY_STRUCT *PMY_STRUCT;
:
: 보내는 부분에서
: SOCKET sock = (SOCKET)arg;
:
: char buf[4096] = {0,};
:
: PMY_STRUCT pMyStruct= (PMY_STRUCT)buf;
:
: //값입력
: pMyStruct->a = 100;
:
: memcpy(pMyStruct->b,"어쩌구~", sizeof("어쩌구~") );
:
: //보내기
: int cch = sizeof(MY_STRUCT);
:
: send(sock, (const char *)&pMyStruct, cch, 0);
: 이렇게 했고요
:
:
: 받는 부분은 이렇거든요
: PMY_STRUCT pMyStruct= (PMY_STRUCT)buf;
:
: while (1)
: {
: SOCKET sockTemp = accept( g_sockListen, NULL, NULL );
: // 소켓 에러 체크
: if( INVALID_SOCKET == sockTemp )
: {
: printf("연결된 소켓 에러");
: return 0;
: }
:
: printf("Socket number %d connected\n",sockTemp);
:
: int strLen;
: char nameMessage[NAMESIZE + BUFSIZE];
:
: // (char *)nameMessage을 다르게 써야하는지요
: strLen = recv( sockTemp, (char *)nameMessage, NAMESIZE + BUFSIZE - 1, 0 );
:
: if (strLen == -1 )
: return 1;
:
: // 받을때 구조체를 받아서 여기 있는 구조체에 복사해서
: // 써야 하는건지 잘모르겠네요
: nameMessage[strLen] = 0;
: printf("%s\n", nameMessage);
: }
:
:
: 결과 값이
: | ?
: 위 처럼 나오네요 뭔가 빼먹은듯 한데...
: 얼마전부터 패킷 보내는걸 해보려는데 잘 안되네요
: 제발 갈켜주세요 ㅠ,.ㅠ
|