serwer UDP i TCP

0

Witam.

Robię właśnie nakładkę na serwer UDP, która polega na dopisaniu możliwości łączenia się z nim również przez TCP. Serwer do tej pory działa z wykorzystanie funkcji select(), która informuje, na którym gnieździe w danym momencie występują dane do odebrania. Wszystko było by ok, gdyby nie to, że muszę jakoś rozróżnić na jakim(TCP czy UDP) gnieździe w danym momencie są dane do obebrania. Select zwraca deskryptor, który później wykorzystuje przy wywołaniu funckji rcvfrom( dla UDP) i rcv(dla TCP). Czy ktoś wie jak to zrobić, żeby się dowiedzieć jakiego typu jest gniazdo, który zwraca select() ?

1

Prosta sprawa - albo odczytujsz to ze swojej tablicy serwera, albo przez getsockopt:

int stype, typelen=sizeof(int);
if (!getsockopt(sock, SOL_SOCKET, SO_TYPE, (char*)&stype, &typelen))

  if (stype==SOCK_DGRAM)
     HandleUdp(sock);
  else if (stype==SOCK_STREAM)
     HandleTcp(sock);
0

Dzięki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.