Добрый день. В настоящий момент пытаюсь реализовать работу с FAST протоколом. MOEX открыл доступ для моего ip к тестовому контуру. Как и требуется я подключился по заданному ip через VPN соединение. Подключение работает, байты приходят. Далее я пытаюсь читать UDP пакеты уже своим приложением. Все по стандарту, создал сокет (UDP), подключился, и пытаюсь читать входящие сообщения функцией recvfrom. Однако, ничего на порт не приходит. Порты пробовал разные (1723, 8080, 16105 и т.п.). В сетевом программировании я варюсь не больше месяца, поэтому прошу помочь людей, которые уже проходили подобное. Код прикладываю.
Установка соединения (тут вроде все ок, работает)
bool SClient::Connect(){
// Init WinSock
WSAData data;
WSAStartup( MAKEWORD(2, 2), &data);
memset(&c_sock, 0, sizeof(c_sock));
memset(&c_addr, 0, sizeof(c_addr));
memset(&sender, 0, sizeof(c_addr));
senderAddrSize = sizeof(sender);
//create socket
c_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
c_addr.sin_family = AF_INET;
c_addr.sin_port = htons(port_);
c_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//c_addr.sin_addr.s_addr = inet_addr(ip_);
if (bind(c_sock, (sockaddr *) &c_addr, sizeof(c_addr))) {
printf("Error bind %d\n", WSAGetLastError());
close(c_sock);
WSACleanup();
return false;
}
return true;
}Попытка чтения сообщений приходящих на сокет (тут все зависает на функции recvfrom)
while(true) {
int res=recvfrom(client.c_sock, (char*)buf, sizeof(buf), 0, (SOCKADDR *)& client.sender, &client.senderAddrSize);
printf("Error recvfrom %d\n", WSAGetLastError());
seq = *(UINT32*)buf;
printf("%12s:seq=%6d:len=%4d\n", inet_ntoa(client.sender.sin_addr), seq, res);
}