scriptkiddiie
Grünschnabel
hey leute
ich habe unter linux einen einfach chat in C geschrieben mit 2 client programmen die identisch sind.
und der chat läuft auch ... nur hab ich ein problem mit meinem select()
ziel ist es, dass beide clients gleichzeitig unabhängig vom andern nachrichten senden und empfangen können.
ich kann auch nachrichten schicken und empfangen. nur hab ich das problem, dass ich beim einlesen des zu sendenden strings mit fgets(buffer, BUF_SIZE, stdin) eine blocking funktion habe und so erst die erhaltene nachricht des andern clients lesen kann wenn ich was eingelesen habe. d.h es soll möglich sein die nachricht zu lesen während ich am einlesen bin.
geht das überhaupt. weil fgets() ist ja blockierend. geht das vieleicht mit einem timestopper der wenn nach einer gewissen zeit nichts geschrieben wurde recvfrom() ausführt?
kann man vieleicht was mit stdin machen ?
wie schon gesagt sind beide clients identisch, das protokoll ist udp und habs auf dem gleichen rechner getestet also ./client1 127.0.0.1 1235 und ./client2 127.0.0.1 1234
wäre froh über alle hilfen
thx
der quelltext ist im anhang
ich habe unter linux einen einfach chat in C geschrieben mit 2 client programmen die identisch sind.
und der chat läuft auch ... nur hab ich ein problem mit meinem select()
ziel ist es, dass beide clients gleichzeitig unabhängig vom andern nachrichten senden und empfangen können.
ich kann auch nachrichten schicken und empfangen. nur hab ich das problem, dass ich beim einlesen des zu sendenden strings mit fgets(buffer, BUF_SIZE, stdin) eine blocking funktion habe und so erst die erhaltene nachricht des andern clients lesen kann wenn ich was eingelesen habe. d.h es soll möglich sein die nachricht zu lesen während ich am einlesen bin.
geht das überhaupt. weil fgets() ist ja blockierend. geht das vieleicht mit einem timestopper der wenn nach einer gewissen zeit nichts geschrieben wurde recvfrom() ausführt?
kann man vieleicht was mit stdin machen ?
wie schon gesagt sind beide clients identisch, das protokoll ist udp und habs auf dem gleichen rechner getestet also ./client1 127.0.0.1 1235 und ./client2 127.0.0.1 1234
wäre froh über alle hilfen
thx
der quelltext ist im anhang
Anhänge
Zuletzt bearbeitet: