programovanie TCP/IP
Juraj Kovac
domcek na domcek.sk
Pondělí Leden 5 03:47:45 CET 1998
Ahojte.
Prave pisem nejaky server, ktory komunikuje s klientom UDP protokolom, a
od isteho casu, neviem z akeho dovodu, dochadza k nejakemu problemu v
komunikacii, a tak by som sa Vas chcel spytat, ci Vas nenapada, v com by
to mohlo byt:
Ak spustim server v popredi, na kontrolnom terminali, vsetko ide normalne,
avsak ak ho spustim v pozadi pomocou if (fork()) exit(0), nastava tento
problem:
klient posle serveru paket, sendto()
server ho v poriadku prijme, recvfrom()
server sa snazi poslat odpoved, ale funkcia sendto() vracia hodnotu -1 a
hodnota errno je 133 (Transport endpoint is already connected)
Pri druhom a dalsich pokusoch poslat paket serveru uz klient vracia
chybovu hlasku vo funkcii recvfrom: connection refused
komunikacna cast vyzera asi takto:
int s;
struct sockaddr_in from;
char *buf;
sockaddr *client;
s = socket(AF_INET, SOCK_DGRAM, 0);
bzero((caddr_t)&from, sizeof(from));
from.sin_port = ntohs(49);
bind(s, (struct sockaddr *)&from, sizeof(from));
fromlen = sizeof(from);
c = recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *)&from, &fromlen);
...
sendto(s, buf, SIZE, 0, client, sizeof(struct sockaddr_in));
Vopred velka vdaka, ak by niekoho nieco napadlo :)
| on irc / ========================+=====================\
___| ___ _ _ ___ ___ ( domcek na domcek.sk | Koliskova 6, BA \
| )| )| | )| |___)|___) juraj.kovac na netax.sk| tel. (07) 711 595 /
|__/ |__/ | / |__ |__ | \ ======================+=====================/
Další informace o konferenci Linux