Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Java Socket kommunikation mit C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.06.2009, 00:21 Uhr
~EisenJC
Gast


Guten Tag, ich habe ein Probleme mit der Kommunikation zwischen Java und C++

TCP Sockets, Java Server, C++ Client (winsock)

Java empfängt mit einem


Code:

Scanner in = new Scanner( client.getInputStream() );




und wartet auf eine message mit




Code:

String line = in.nextLine();




Allerdings blockiert er bei dieser Methode solange bis der client geschlossen wird bzw. das socket. Dann erst wird weiter gemacht und da hat er dann soviele messages an einander gepackt wie er empfangen hat.

was kann ich tun, dass er sofort nach erhalt weiter macht. Muss ich irgendeinen Puffer leeren? Ich habe auch schon BufferReader, DataInputStream usw. ausprobiert, diese emfpangen gar nichts!!

Die Kommunikation zwischen Java Server und Java Client läuft fehlerfrei. Ebenfalls auf der C++ Seite.

Danke im vorraus und beste Grüße
Eisen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.06.2009, 07:53 Uhr
Bruder Leif
dances with systems
(Operator)


Wie sieht der C++-Code aus? Klingt, als haettest Du vergessen, nach dem Schreiben zu flushen...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.06.2009, 09:32 Uhr
~EisenJC
Gast


Hallo, danke für die Antwort!
Hier der C++ Code zum versenden:

Code:

// Daten versenden via TCP
bool Socket::send( const string s ) const {
   int status = ::send ( m_sock, s.c_str(), s.size(),  0 );
   if ( status == -1 ) {
      return false;
   }
   else {
      return true;
   }
}



1. Es funktioniert wenn Client und Server in C++ sind.
2. Ich hab gelesen man kann TCP nicht flushen, deswegen bin ich da nicht weiter hinterher.

Wie geht das? Wäre ja klasse wenn das läuft =D
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.06.2009, 10:49 Uhr
Bruder Leif
dances with systems
(Operator)


Enthaelt denn der zu sendende String ein Newline? Darauf wartet der Java-Part.

Nebenbei wuerde ich eine const-Referenz auf s uebergeben, solange Du nicht in einer Multithread-Umgebung arbeitest, ist performanter.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.06.2009, 16:40 Uhr
~EisenJC
Gast


Das soll natürlich "in.next() heißen und nicht "in.nextLine" mein fehler sorry.

Meint ihr, es kann an der Null terminierung von C++ liegen?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: