ich habe mal wieder ein C-Problem. Und zwar möchte ich ganz elementar String über einen Socket übertragen. Dazu habe ich einen Sender und einen Empfänger-Prozess geschrieben. Das Problem ist aber die Daten kommen unvollständig und zerhackt an. Dabei habe ich diesmal genug Platz im Puffer gelassen.
Erst mal der Sender:
Code: Alles auswählen
....
char puffer [ MAX_ZEICHEN ];
struct sockaddr_in mysock;
struct in_addr insock;
....
// socket, connect usw.
strcpy ( puffer, "**END**" );
laenge_string = strlen ( puffer );
if ( ( write ( client_socket, puffer, laenge_string ) ) != laenge_string )
{
perror ( "Fehler beim beschreiben des Sockets Ende\n" );
exit ( errno );
}
...
Nun der Empfänger:
Code: Alles auswählen
...
char *puffer;
char *endzeichen = "**END**";
...
size_t adr_laenge = sizeof ( struct sockaddr_in );
struct sockaddr_in mysock;
struct in_addr insock;
....
// socket, bind, listen, accept usw.
while ( 1 )
{
puffer = ( char* ) malloc ( 16 );
if ( ( read ( rueck_gabe, puffer, sizeof ( puffer ) ) ) == -1 )
{
perror ( "Fehler beim Lesen aus dem Socket\n" );
exit ( errno );
}
write ( STDOUT_FILENO, puffer, 8 );
printf ( "\n" );
free ( puffer );
if ( ! strcmp ( puffer, endzeichen ) )
{
break;
}
sleep ( 1 );
}
und wird natürlich nie beendet. Ich habe es auch schon mit einem kleineren Puffer probiert, und auch mit send und recv. Immer das gleiche Problem.**EN
D**
...
Ausser der Tatsache, daß beim Einsatz von send und recv ich mit nur einer Nachricht durchaus den String richtig übergeben konnte und der Empfänger auch terminierte. Wenn ich aber mehrere Nachrichten übertragen habe, wurden diese auch zerhackt.
Wo liegt das Problem?
Vielen Dank schon mal...
Gruss Christian