PDA

View Full Version : [C-UNIX]Client server udp


stella_650
02-01-2007, 16:18
Ciao a tutti!Innanzitutto Auguri per un felice 2007 :)
Ora la mia richiesta di aiuto...
Dovevo implementare un client udp connesso ed un server udp per il conteggio di caratteri di stringhe di lunghezza arbitraria.
Il problema è che nel testarli, mi viene restituito un errore di segmentation fault... :confused:

Allego i codici per darvi un'idea di come abbia sviluppato la traccia ed eventualmente, sapere dove intervenire per evitare questo errore...
GRAZIE mille a priori

71104
03-01-2007, 03:01
Il problema è che nel testarli, mi viene restituito un errore di segmentation fault... :confused: chi è che da segmentation fault, server o client?

71104
03-01-2007, 03:04
ho dato un'occhiata al codice, ma come mai i nomi delle funzioni dei socket li hai scritti con l'iniziale maiuscola...?? :confused:
ma sei riuscita a compilare? :wtf:

71104
03-01-2007, 03:06
ho dato un'occhiata al codice, ma come mai i nomi delle funzioni dei socket li hai scritti con l'iniziale maiuscola...?? :confused: sono forse funzioni di quell'"arpa/inet.h", o di quel "Wrapper.h"...? non conosco quegli headers... in tal caso, hanno qualche funzionamento particolare o sono semplici renaming delle funzioni originali?

stella_650
03-01-2007, 11:19
l'errore di segmentation fault lo da' il client.
I programmi utilizzamo delle wrapper per tutte le funzioni che compaiono con la lettera maiuscola..è una libreria che ho fatto a parte che ora mando per eseguire il codice senza problemi...anzi scusa se non l'ho fatto prima...mi sono distratta nell'allegare i file
(si deve rinominare il file come Wrapper.h)

Grazie per avermi risposto ;)

71104
03-01-2007, 15:05
be', a occhio non vedo da nessuna parte uso di puntatori quindi escludo dangling pointers, overflow nell'heap, e doppie free.

l'unica che mi viene in mente è che la read restituisca un valore negativo (mooolto negativo, perché un -1 lì non basta :D magari è un flag) che scrive sotto la fine dello stack. prova semplicemente a sostituirla con la tua Read.

altrimenti esegui passo-passo col gdb e vedi di preciso dov'è che salta il segmentation fault.

71104
03-01-2007, 15:08
l'unica che mi viene in mente è che la read restituisca un valore negativo (mooolto negativo, perché un -1 lì non basta :D magari è un flag) che scrive sotto la fine dello stack. prova semplicemente a sostituirla con la tua Read. ho controllato nel man e a quanto pare il minimo che la read può tornare è -1, quindi non è lì. però sostituisci comunque con la tua Read. ed inoltre, nel wrapper, correggi l'implementazione di Write: non è un errore se vengono scritti meno bytes di quelli richiesti; l'errore si verifica solo quando write ritorna -1.

71104
03-01-2007, 15:10
ho controllato nel man e a quanto pare il minimo che la read può tornare è -1, quindi non è lì. mi correggo: potrebbe benissimo essere quella la causa invece, perché facendo in quel modo potresti modificare un frame pointer. :)

trallallero
03-01-2007, 15:56
mi correggo: potrebbe benissimo essere quella la causa invece, perché facendo in quel modo potresti modificare un frame pointer. :)
finito di tacchinare ? :O
guarda che stella_650 é un mio clone :read:

:sofico:

71104
03-01-2007, 16:23
mi sembrava scortese lasciarlo vuoto sto thread :asd:

trallallero
03-01-2007, 17:51
mi sembrava scortese lasciarlo vuoto sto thread :asd:
:mc:

scherzi a parte mi sa che il sorgente è incompleto perchè in effetti quelle funzioni in maiuscolo dovrebbero dare errore in compilazione.

71104
03-01-2007, 17:53
scherzi a parte mi sa che il sorgente è incompleto perchè in effetti quelle funzioni in maiuscolo dovrebbero dare errore in compilazione. e leggi :Prrr: (http://www.hwupgrade.it/forum/showpost.php?p=15345418&postcount=5)

trallallero
03-01-2007, 18:01
e leggi :Prrr: (http://www.hwupgrade.it/forum/showpost.php?p=15345418&postcount=5)
uao! ti ha risposto e siamo già agli occhiolini :D
sei un mito :O

@stella_650: scherzo eh ;) ma un pò di presenza femminile aiuta ad allietare la giornata
:D

stella_650
03-01-2007, 20:10
Grazie ragazzi per la partecipazione al mio problema.
Rivedendo le wrapper function, sn riuscita a correggere quegli errori di compilazione e alla fine quel problema di segmentation fault non si è più presentato...

Ora quel programma mi funziona...
Grazie a 71104, sempre disponibile, e a trallallero, che voleva fingersi un mio clone...hehehe :D

trallallero
03-01-2007, 20:19
Grazie ragazzi per la partecipazione al mio problema.
Rivedendo le wrapper function, sn riuscita a correggere quegli errori di compilazione e alla fine quel problema di segmentation fault non si è più presentato...

Ora quel programma mi funziona...
Grazie a 71104, sempre disponibile, e a trallallero, che voleva fingersi un mio clone...hehehe :D
:nonsifa: mettiamo le cose in chiaro, eri tu il mio clone :O
:D

vabbè, meglio così. Bello quando si risolvono i problemi anche perchè se non si possono risolvere non sono problemi :uh:

71104
03-01-2007, 21:10
Grazie ragazzi per la partecipazione al mio problema.
Rivedendo le wrapper function, sn riuscita a correggere quegli errori di compilazione e alla fine quel problema di segmentation fault non si è più presentato... *a-ehm* qualcosa non mi torna :huh:
ma stigrancazzi :D :D :D

Ora quel programma mi funziona... evvààài!! :mano:
ora siccome io, e ehm, e anche trallallero, siamo molto interessati a capire dov'era il problema perché siamo molto molto nerd, ja ja, contattaci pure per email o su msn o come vuoi, intanto il mio indirizzo MSN sta nel profilo qui sul forum :|

:P

Grazie a 71104, sempre disponibile, jà, bravissima, esattamente :read:

e a trallallero, che voleva fingersi un mio clone...hehehe :D àhhh! che birbante :D

71104
03-01-2007, 21:13
:nonsifa: mettiamo le cose in chiaro, eri tu il mio clone :O
:D @stella_650: il ragazzo qui è uno di quella tipologia di nerd appassionati di Star Trek :asd:

trallallero
04-01-2007, 07:28
@stella_650: il ragazzo qui è uno di quella tipologia di nerd appassionati di Star Trek :asd:
ti denuncio per diffamazione :huh:

stella_650
04-01-2007, 08:21
Ciao raga!
il problema era nelle Wrapper che dava degli errori:
per testare i due programmi ho continuato ad utilizzare la read della libreria del C e non la mia,(devo ancora capire bene perchè succede qualcosa di anomalo lì ma questo non era il mio problema principale) e alla fine, ricompilando il tutto, lasciando inalterati entrambi i codici, quell'errore non si è più presentato.
Se dovessi spiegarvi come mai è sparito, non sarei in grado di dimostrarlo..perchè era molto strano :)

Cmq ragazzi vi ringrazio tantissimo per la disponibilità come sempre! ;)

P.S: trallallero...andiamoci piano con questa storia del clone ahahahahhaha

trallallero
04-01-2007, 08:55
Ciao raga!
il problema era nelle Wrapper che dava degli errori:
per testare i due programmi ho continuato ad utilizzare la read della libreria del C e non la mia,(devo ancora capire bene perchè succede qualcosa di anomalo lì ma questo non era il mio problema principale) e alla fine, ricompilando il tutto, lasciando inalterati entrambi i codici, quell'errore non si è più presentato.
Se dovessi spiegarvi come mai è sparito, non sarei in grado di dimostrarlo..perchè era molto strano :)

Cmq ragazzi vi ringrazio tantissimo per la disponibilità come sempre! ;)
scusa ma che vantaggio ti danno queste wrapper ? praticamente hai fatto delle funzioni in maiuscolo identiche a quelle chiamate, stesso numero di parametri e stesso valore di ritorno.
Se é per la gestione dell'errore e basta secondo me non é molto conveniente.
Ovviamente é una mia opinione ma far fare una exit(1) cosí, senza se e senza ma da una funzione che ha altre responsabilitá, non é conveniente. Se ci sono files aperti, memoria allocata etc etc ?


P.S: trallallero...andiamoci piano con questa storia del clone ahahahahhaha
ok, il gioco é bello quando dura poco :)

71104
04-01-2007, 13:53
[cut] non mi si legge più il forum, me lo devi ripetere per email :huh: :huh: :huh:

71104
04-01-2007, 13:54
Se ci sono files aperti, memoria allocata etc etc ? sono risorse che una exit riesce a liberare automaticamente :read:

trallallero
04-01-2007, 13:59
sono risorse che una exit riesce a liberare automaticamente :read:
non mi fido per natura :O

stella_650
04-01-2007, 18:22
Beh chiarisco subito che fare le Wrapper mi è stato chiesto per fare una serie di applicazioni, tra cui quella che ho proposto in questo forum.
Sono esattamente le stesse funzioni, solo che si evitano controlli nel programma principale, rendendo più leggibile il codice (nulla di particolare);
comunque anche io sono d'accordo con te trallallero ed infatti non preferisco utilizzarle, in questo caso dovevo :)

Grazie ancora