[an error occurred while processing this directive]
|
Так сокет создается и биндится:
m_Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
memset ((char *)&SockName, '\0', sizeof(SockName));
SockName.sin_family = AF_INET;
SockName.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
SockName.sin_port = htons(m_LocalPort);
if (bind(m_Socket, (SOCKADDR *) &SockName, sizeof (SockName)) != 0)
return;
Вот так происходит передача:
memset((unsigned char *)&TargetAddr, '\0', sizeof(TargetAddr));
TargetAddr.sin_family = AF_INET;
TargetAddr.sin_addr.S_un.S_addr = htonl(Controller->Address);
TargetAddr.sin_port = htons(REMOUTE_PORT);
sendto(m_Socket,
(char *)buf,
len,
0,
(SOCKADDR *) &TargetAddr,
TargetAddrSize);
И вот так прием:
len = recvfrom(m_Socket,
(char *)buf,
ONC_BUFFER_SIZE - count,
0,
(SOCKADDR *) &SenderAddr,
&SenderAddrSize);
А теперь вопросы:
1) Номер удаленного порта REMOUTE_PORT равняется 5000. В пакете который уходит из хоста к контроллеру порт назначения равняется 1... Почему?
2) Комп виснет чтении ответа. Тоже не понятно почему.
Помогите, пожалуйства. WSAStartup происходит без ошибок.
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
return;