Pytanie dot. socketów w SFML2
Ostatnio zmodyfikowano 2015-04-10 17:26
BartQ Temat założony przez niniejszego użytkownika |
Pytanie dot. socketów w SFML2 » 2015-04-08 18:14:28 Witam, szybkie pytanko - w jaki sposób mogę wybrać port z którego chcę nadawać? Napisałem program, który czeka na pakiet, lecz za każdym razem leci z innego portu. Właściwie to nie pytałbym się o to gdyby nie fakt, że tylko jeden komputer (z dwóch) odbiera dane. Posiadam dwie funkcje, jedna wysyła broadcast, a po niej druga, która czeka na informacje. Ten sam kod na obu maszynach. Jedna odbiera dane prawidłowo (gdy uruchamiam program na drugim PC), natomast druga nie - czeka i czeka... #include <SFML/Network.hpp> #include "network.h" #include <iostream> #include <string>
void sendMyInfo() { sf::UdpSocket searchSocket; std::string myLocalAddress = sf::IpAddress::getLocalAddress().toString(); std::string broadcast = sf::IpAddress::Broadcast.toString(); std::cout << "Twoje IP to: " << myLocalAddress << std::endl; std::cout << "BROADCAST: " << broadcast << std::endl; char dataSend[ 100 ] = "DANE......."; sf::IpAddress recipient = broadcast; unsigned short portSending = 54000; if( searchSocket.send( dataSend, 100, recipient, portSending ) != sf::Socket::Done ) { std::cout << "Sending ERROR" << std::endl; } else std::cout << "Sending SUCCESSED" << std::endl; }
getClientsStruct receiveClientIfno() { getClientsStruct ClientInfo; sf::UdpSocket searchSocket; if( searchSocket.bind( 54000 ) != sf::Socket::Done ) { std::cout << "ERROR binding" << std::endl; } else std::cout << "BIND success" << std::endl; char dataReceived[ 100 ]; std::size_t received; sf::IpAddress sender; unsigned short portReceive; if( searchSocket.receive( dataReceived, 100, received, sender, portReceive ) != sf::Socket::Done ) { std::cout << "Receive ERROR" << std::endl; } std::cout << "Received " << received << " bytes from " << sender << " on port " << portReceive << std::endl; return ClientInfo; }
@EDIT: Zmieniłem kod z wysyłania broadcastu na bezposrednie IP i działa prawidłowo...lecz potrzebuję broadcastu, dodam, że wszystkie firewale itp wyłączone ;/ |
|
DejaVu |
» 2015-04-09 17:42:14 router wycina broadcastowy ruch - to jego domyslna cecha. |
|
BartQ Temat założony przez niniejszego użytkownika |
» 2015-04-10 17:26:15 Dzięki za odpowiedź ;). Znalazłem problem - gdy nadaje 255.255.255.255 broadcast leci na złym interfejsie (mam ich kilka). Będę musiał dodatkowo wyciągać maskę i liczyć broadcast danej sieci. |
|
« 1 » |