Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Broken pipe

[es] :: C/C++ programiranje :: Broken pipe

[ Pregleda: 3367 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Broken pipe29.06.2003. u 20:26 - pre 252 meseci
Imam problem sa funkcijom send().
U pitanju je jedan TCP client i server.
Server lepo radi, sve dok ne izgubi konekciju sa klijentom.

Dakle, recimo klijentu pukne veza, a server (normalno) to ne zna, jer se klijent nije normalno diskonektovao, već je njegova veza pukla.
Ako server pokuša nešto da pošalje klijentu, kroz socket, dešava se nešto čudno.
Na windows-u funkcija send() lepo vrati -1, što znači da je socket 'prso'.

Ali, na Linuxu, kada prvi put zovnem send() - funkcija vrati broj poslatih bajtova - kao da je sve u redu, kao da je poslao string !?!
Ako ponovo zovnem send() - načiću se u konzoli sa porukom : Broken pipe, i ceo program padne.
Nikad mi ne vraća -1.

Sors je isti i za Win i za UNIX, naravno na windowsu imam onu WSA inicijalizaciju...
U čemu je problem ?
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.pexim.co.yu



+62 Profil

icon Re: Broken pipe30.06.2003. u 10:05 - pre 252 meseci
Elem, ja sam laik za ovu temu, ali se meni cini da te zeza neki buffer. Kanda send() upise podatke u buffer (i vrati broj bajtova), pa tek na sledeci poziv send-a se vrsi stvarno slanje (flush) i tada cela stvar puca.
A mozda na Linux-u postoji citav jedan medjusloj (znaci, ne samo buffer) vise nego na Windows-u...
Poz

Rajko
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Broken pipe30.06.2003. u 16:05 - pre 252 meseci
Bilo bi lepo kada bi se UNIX programeri javili, valjda na ovom forumu jos uvek ljudi pomazu jednim drugima?
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Broken pipe30.06.2003. u 17:22 - pre 252 meseci

Predraže,

opet patiš od nečitanja dokumentacije. :) Pročitaj stranu o funkciji send() iz dokumentacije za libc. Evo kako dotična počinje kod mene. (vidi dole) Pročitaj ostatak i valjda će se i sijalica upaliti.

Ne zaboravi, komanda M-x h i m libc RET je tvoj prijatelj. :) Tj. ako koristiš emacs. Nemam pojma kako se slično dobija u onom drugom editoru.

f

Citat:

File: libc.info, Node: Sending Data, Next: Receiving Data, Up: Transferring Data

Sending Data
............

The `send' function is declared in the header file `sys/socket.h'.
If your FLAGS argument is zero, you can just as well use `write'
instead of `send'; see *Note I/O Primitives::. If the socket was
connected but the connection has broken, you get a `SIGPIPE' signal for
any use of `send' or `write' (*note Miscellaneous Signals::).

 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Broken pipe30.06.2003. u 18:01 - pre 252 meseci
gde si nasao ovo?
odem na M-x, i sta onda?
ne vidim nista u vezi libc-a i funkcije send() ?
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Broken pipe30.06.2003. u 18:14 - pre 252 meseci
Citat:
filmil:
Ne zaboravi, komanda M-x h i m libc RET je tvoj prijatelj. :) Tj. ako koristiš emacs. Nemam pojma kako se slično dobija u onom drugom editoru.


Sigurno je Filip mislio na C-h i m glibc RET ili M-x info RET m glibc RET.

Ako već ovo nije jasno, probaj npr. „samostalni info čitač“ sa „info glibc“.

U svakom slučaju, kada dovde stigneš, samo uradi „i send RET“, i u svakom slučaju ćeš dobiti isti rezultat, a to je ona stranica koju Filip pominje.

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Broken pipe30.06.2003. u 18:16 - pre 252 meseci
Citat:
filmil:

Ne zaboravi, komanda M-x h i m libc RET je tvoj prijatelj.



Koliko kucanja da bi se dobilo F1. Strašno...
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Broken pipe30.06.2003. u 18:22 - pre 252 meseci
Pa nemoj tako Nemanja, na ovaj način se izvrši i pretraga čitave pomoći na sistemu ;-)

Ako hoćeš kraće rešenje, samo odeš iznad „send(...)“ funkcije i kucaš C-h S

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Broken pipe30.06.2003. u 18:31 - pre 252 meseci
Citat:
tOwk:
Sigurno je Filip mislio na C-h i m glibc RET ili M-x info RET m glibc RET.


Pardon. Dakle gore je citirana (ispravna) dobitna kombinacija by tOwk.

f

ps. Za Tatu: pretpostavka da čovek nije napravio prečicu... :>

... i posle se pitaju koji je najbolji editor.
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Broken pipe01.07.2003. u 01:43 - pre 252 meseci
dakle, resen problem

ako neko u buducnosti ima ovaj problem, treba samo da
#include <signals.h>
i negde na pocetku programa uradi:
signal(SIGPIPE, SIG_IGN);

naravno, treba staviti to pod #ifdef ako pisete portabilnu aplikaciju

hvala svima na pomoci
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Broken pipe01.07.2003. u 10:27 - pre 252 meseci

Takođe bih pogledao i fleg MSG_NOSIGNAL koji isključuje SIGPIPE samo za funkcije send/recv, a ne globalno.

f
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Broken pipe01.07.2003. u 15:27 - pre 252 meseci
ajd probacu... :)
deluje kao pravo resenje, bas mi to treba...
 
Odgovor na temu

BORG
Aleksandar (Sasa) U.
*NIX System/Network Administrator
BL-RS

Član broj: 200
Poruke: 916
*.wireless.blic.net

ICQ: 46124351
Sajt: bitches.kicks-ass.net


Profil

icon Re: Broken pipe01.07.2003. u 20:08 - pre 252 meseci
Citat:
Predrag Damnjanovic:
dakle, resen problem

ako neko u buducnosti ima ovaj problem, treba samo da
#include <signals.h>
i negde na pocetku programa uradi:
signal(SIGPIPE, SIG_IGN);

naravno, treba staviti to pod #ifdef ako pisete portabilnu aplikaciju

hvala svima na pomoci


Ispravka ..

#include <signal.h>


With a PC, I always felt limited
by the software available.
On Unix, I am limited only by my knowledge.

--Peter J. Schoenster
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: Broken pipe01.07.2003. u 21:08 - pre 252 meseci
bolje je ovo drugo, da stavljas MSG_NOSIGNAL kod send() i recv()...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Broken pipe

[ Pregleda: 3367 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.