|
UDP 기반 서버 테스트 프로그램을 작성중인데요
void __fastcall TForm1::SockRecvData()
{
WSADATA wsaData;
SOCKADDR_IN servAddr;
char message[BUFSIZE];
SOCKADDR_IN clntAddr;
int sock_len;
int str_len=0; // 수신한 바이트수
if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0) // 윈속 초기화
{
Showmessage("Error 1");
}
hUDPSock = socket(PF_INET, SOCK_DGRAM, 0);// IPPROTO_UDP); //소켓연결
if (hUDPSock == INVALID_SOCKET)
{
Showmessage("Error 2");
}
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET; // 2
servAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
servAddr.sin_port = htons(atoi(servPort));
if ( bind(hUDPSock, (SOCKADDR*) &servAddr, sizeof(servAddr)) == SOCKET_ERROR )
{
Showmessage("Error 3");
exit(3);
}
sock_Count = 0;
bLoop = true;
while ( bLoop )
{
sock_len = sizeof(clntAddr);
str_len = recvfrom(hUDPSock, message, BUFSIZE, 0,(SOCKADDR*)&clntAddr, &sock_len );
if (str_len > 0)
{
sock_Count++;
} else if (str_len > 9999999)
sock_Count = 0;
}
}
위와 같이 소켓을 생성하고 데이타가 넘어오면 카운트 되게 할려고 하는데요
'recvfrom'이 얼마나 데이타를 처리할수 있는지 알수가 없습니다.
몇건 안되는건 처리를 잘하는거 같은데 1000이 넘어가버리니까 프로그램이 다운 되어버리네요...
어디서 잘못한걸까요?
그리고 위 소켓은 초당 몇개까지 데이타를 안정적으로 받을수 있을까요?
|