izmenjeno 1 put, poslednji put bojannrt2104 20.03.2009. u 12:00
Izmene poruke
- bojannrt210420.03.2009. u 12:00zapis iz teksta poruke
Da li je moguće definisati dva prijemna porta u c++ u console aplication.Ja sa funkcijom recivefrom mogu da čitam samo as jednog porta,pa me zanima da li je moguće nekako definisati dva prijemna porta,koja bi mogao da očitavam istovremeno.
Evo kako mi sada glasi kod za vezivanje UDP servera na jedan PORT i očitanu IP adresu računara.Da li neko zna kako napraviti dva prijemna porta(niti)?
// Odredjivanje IP adrese maticnog racunara koja je potrebna za bindovanje soketa
if (gethostname(hostName,30)) cout<< WSAGetLastError();
cout<<endl;
cout<<"Moj hostname:"<<hostName<<endl;
if ((hp=gethostbyname(hostName))==NULL)
{
return;
}
memcpy((char*)&ia,(char*)hp->h_addr,hp->h_length);
ip=inet_ntoa(ia);
cout<<"Ocitana IP adresa:"<<ip<<endl;
// Kreiranje soketa za UDP protokol.
sock = socket ( AF_INET, SOCK_DGRAM, 0 );
if ( sock == INVALID_SOCKET ) cout<<"greska Kreiranje soketa";
else cout<< "Kreiran je soket!"<<endl;
// Vezivanje soketa za naznacenu IP adresu i broj porta (bindovanje).
UdpServ.sin_family = AF_INET;
UdpServ.sin_addr.s_addr = htonl (INADDR_ANY);
UdpServ.sin_port = htons (PORT);
err = bind ( sock, (SOCKADDR *) &UdpServ, sizeof (SOCKADDR_IN) );
if ( SOCKET_ERROR == err ) cout<<"greska kod bindovanja"<<endl;
else cout<<"Bindovan."<<endl<<endl;
// Adresa i broj porta na kom primamo datagram
UdpServ.sin_addr.S_un.S_addr=inet_addr(ip); // za ocitanu IP adr
printf("Moja ocitana IP adrsa: %s \n",ip);
// UdpServ.sin_addr.S_un.S_addr=inet_addr(Moja_IPadresa); // za moju IP adr
// printf("Moja IP adrsa: %s \n",Moja_IPadresa);
UdpServ.sin_port = htons (PORT);
printf("Moj ocitan Port: %d \n",PORT);
// Primanje datagrama
nSize = sizeof ( SOCKADDR_IN );
int first=1;
received= recvfrom ( sock,(char*)achBuffer1,MAX_LEN, 0,(SOCKADDR FAR *) &UdpServ,&nSize);
achBuffer1[received]='\0';
Evo kako mi sada glasi kod za vezivanje UDP servera na jedan PORT i očitanu IP adresu računara.Da li neko zna kako napraviti dva prijemna porta(niti)?
// Odredjivanje IP adrese maticnog racunara koja je potrebna za bindovanje soketa
if (gethostname(hostName,30)) cout<< WSAGetLastError();
cout<<endl;
cout<<"Moj hostname:"<<hostName<<endl;
if ((hp=gethostbyname(hostName))==NULL)
{
return;
}
memcpy((char*)&ia,(char*)hp->h_addr,hp->h_length);
ip=inet_ntoa(ia);
cout<<"Ocitana IP adresa:"<<ip<<endl;
// Kreiranje soketa za UDP protokol.
sock = socket ( AF_INET, SOCK_DGRAM, 0 );
if ( sock == INVALID_SOCKET ) cout<<"greska Kreiranje soketa";
else cout<< "Kreiran je soket!"<<endl;
// Vezivanje soketa za naznacenu IP adresu i broj porta (bindovanje).
UdpServ.sin_family = AF_INET;
UdpServ.sin_addr.s_addr = htonl (INADDR_ANY);
UdpServ.sin_port = htons (PORT);
err = bind ( sock, (SOCKADDR *) &UdpServ, sizeof (SOCKADDR_IN) );
if ( SOCKET_ERROR == err ) cout<<"greska kod bindovanja"<<endl;
else cout<<"Bindovan."<<endl<<endl;
// Adresa i broj porta na kom primamo datagram
UdpServ.sin_addr.S_un.S_addr=inet_addr(ip); // za ocitanu IP adr
printf("Moja ocitana IP adrsa: %s \n",ip);
// UdpServ.sin_addr.S_un.S_addr=inet_addr(Moja_IPadresa); // za moju IP adr
// printf("Moja IP adrsa: %s \n",Moja_IPadresa);
UdpServ.sin_port = htons (PORT);
printf("Moj ocitan Port: %d \n",PORT);
// Primanje datagrama
nSize = sizeof ( SOCKADDR_IN );
int first=1;
received= recvfrom ( sock,(char*)achBuffer1,MAX_LEN, 0,(SOCKADDR FAR *) &UdpServ,&nSize);
achBuffer1[received]='\0';