Hi, I have two UDP listener sockets in a worker thread (I use a thread because is a DLL). When I receive any data in the OnDataAvailable, ReceiveFrom method call return -1 and OnDataAvailable is triggered in a infinite loop. The same code with Receive method works fine. What is wrong? Could be a bug in ReceiveFrom? Any idea?
Sockets options: server1->MultiThreaded = true; //it's neccesary? server1->OnDataAvailable = SocketDataAvailable1; server1->Proto = "udp"; server1->Addr = "0.0.0.0"; server1->MultiCast = true; server1->MultiCastAddrStr = "Multicast addr"; server1->ReuseAddr = true; server1->Port = PORT1; server2->MultiThreaded = true; //it's neccesary? server2->OnDataAvailable = SocketDataAvailable2; server2->Proto = "udp"; server2->Addr = "0.0.0.0"; server2->MultiCast = true; server2->MultiCastAddrStr = "Multicast addr"; server2->ReuseAddr = true; server2->Port = PORT2; SocketDataAvailable1 y 2 int rec, FromIPLen; TSockAddrIn FromIP; int leidos = 0; int procesados = 0; char block[TAM_BUFFER]; std::string frame; if (Error == 0) { do { rec = server->ReceiveFrom(block, sizeof(block), FromIP, FromIPLen); //First call return -1 //rec = server->Receive(block, sizeof(block)); //With this, it works fine if (rec > 0) { std::string buf; buf.assign(block, rec); frame += buf; leidos = leidos + rec; } }while (rec > 0 && rec == sizeof(block)); if (leidos > 0) { LOGIN("Received :%s, %d.", frame.c_str(), leidos); } } message pump while(!Terminated) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0) { // Windows specific messages DispatchMessage(&msg); if(msg.message == WM_QUIT) { server1->Close(); server2->Close(); this->Terminate(); break; } else if(msg.message == MY_MESSAGES) { Proccess_My_Messages } } if (!Terminated) { WaitMessage(); } } Thanks for all help. -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be