Socketverbindung zwischen Javaclient und C-Server

Status
Nicht offen für weitere Antworten.

joergh

Aktives Mitglied
Hallo!
Wusste nicht, wo ich dieses Theam reinschreiben soll, hätte auch genauso gut ins C-forum gepasst, aber ich probiere es mal so:

Ich möchte eine Socketverbindung zwischen Java und C schaffen. Hier mein problembehafteter Code:

Java-Client:
Code:
while(connect){
        try{
            labviewClient = new Socket(InetAddress.getByName(labviewIP),labviewPort);
            outStream = new ObjectOutputStream(labviewClient.getOutputStream());
            outStream.flush();
            inStream = new ObjectInputStream(labviewClient.getInputStream());
            connect = false;
        }
        catch(Exception e){
            System.out.println(+e);
        }
    }
       
    try{
        String toSend = "f";
        sendData(toSend);
    }
    catch(NullPointerException n){}

C-Server
Code:
if (!AfxSocketInit())
    {
        fprintf(stderr, "could not init\n");
        return 1;
    }

   acceptSocket = new(CSocket);

   if (!acceptSocket->Create(5555))
    {
        err = acceptSocket->GetLastError(); //just for debugging
        fprintf(stderr, "could not create socket: %d\n", err);
        return 1;
    }
    if (!acceptSocket->Listen()) // we just wait for ONE connection
    {
        err = acceptSocket->GetLastError(); //just for debugging
        fprintf(stderr, "could not listen to socket\n");
        return 1;
    }
    if (!acceptSocket->Accept(*refreshSocket)) // no waiting partner
    {
        err = acceptSocket->GetLastError();
        fprintf(stderr, "could not accept socket");
        return 1;
    }

    bool first = true;
    int length = 1400;
    char buff[1400];
    while(first)
    {
        if(recv(*refreshSocket, buff, length, 0))
        {
            if(buff[0] == 'f')
            {
                first = false;

                closeSocket(refreshSocket);
                closeSocket(acceptSocket);

            }
        }
    }
Die Verbindung klappt und der C-Server läuft auch schon freudig vor sich hin. Der java-Client hingegen nicht. Er wartet bei der zeile
Code:
inStream = new ObjectInputStream(labviewClient.getInputStream());
und läuft nicht weiter.
Was muss ich auf der Serverseite machen? Oder liegt mein Problem wo anders?

Vielen Dank für Eure Hilfe!
ulli
 

HoaX

Top Contributor
ein objectinputstream erwartet eine entsprechende formatierung der daten die dein server nicht liefert (davon geh ich einfach mal aus).

der objectinputstream liest im konstruktor schon den header des stream, den der server nicht liefert (ich sehe keine zeile die sendet, ind ein read beim inputstream wartet bis endlich was zum lesen da ist).
 

joergh

Aktives Mitglied
HoaX hat gesagt.:
ein objectinputstream erwartet eine entsprechende formatierung der daten die dein server nicht liefert (davon geh ich einfach mal aus).

der objectinputstream liest im konstruktor schon den header des stream, den der server nicht liefert (ich sehe keine zeile die sendet, ind ein read beim inputstream wartet bis endlich was zum lesen da ist).

ich hab jetzt mal in Zeile 28:
Code:
send(acceptSocket ,"hallohallo",10,1);

Eingefügt. Das bringt immerhin einen Teilerfolg: java wirft folgende Exception:

Code:
java.io.StreamCorruptedException: invalid stream header: 68616C6C
 

thE_29

Top Contributor
ObjectInpustream erwartet OBJEKTE (wie der Name schon sagt)
Nimm nen normalen INput/Outputstream dann sollte das ganze auch klappen!
 

joergh

Aktives Mitglied
thE_29 hat gesagt.:
ObjectInpustream erwartet OBJEKTE (wie der Name schon sagt)
Nimm nen normalen INput/Outputstream dann sollte das ganze auch klappen!

Habs dann mit DataInputStreams probiert und das bringt mich schon weiter - Programm läuft zwar noch nicht wie ich es will, aber das wird wohl noch.

Recht herzlichen Dank!
 

HoaX

Top Contributor
auch der datainputstream hat sein eigenes format. wenn du z.B. einen string sendest wird dessen länge zuvor gesendet. nimm lieber direkt den inputstream, wie schon gesagt
 

joergh

Aktives Mitglied
HoaX hat gesagt.:
auch der datainputstream hat sein eigenes format. wenn du z.B. einen string sendest wird dessen länge zuvor gesendet. nimm lieber direkt den inputstream, wie schon gesagt

Okay, jetzt hänge ich aber... google bringt nichts... Der Inputstream muss ja nun irgendwie auf den Socket bezogen werden.
Analog
Code:
inStream = new InputStream(labviewClient.getInputStream());
funktioniert es nicht....
 

joergh

Aktives Mitglied
Die fragen hören leider nicht auf...

Code:
receivedData= "";
				System.out.println("vor empfangen");
				BufferedReader in = new BufferedReader(new InputStreamReader(myClient.getInputStream())); 
				try{
					System.out.println("in.readLine()"+in.readLine());
				}
				catch(Exception e){
					System.out.println(e);
				}
				while ((receivedData = in.readLine()) != null) {
					System.out.println("receivedData: "+receivedData);
				}
So versuche ich von vc++ gesendete Daten zu empfangen. Sobald in.readLine() aufgerufen wird, stürzt das Programm ab. Einige Versuche zeigen, dass etwas empfangen wurde (wenn "in" selbst ausgegeben wird), nach in.readLine() passiert allerdings überhaupt nichts mehr, es wird nicht einmal eine Exception geworfen. Woran liegts? Gibts ne empfangsalternative? Würde schon gerne auch das empfangen,w as geschickt wird.

Danke!
 

HoaX

Top Contributor
sicher dass er aus dem readLine-Aufruf zurück gekomment ist? sicher dass die gegenseite einen zeilenumbruch gesendet hat?
 

joergh

Aktives Mitglied
HoaX hat gesagt.:
sicher dass er aus dem readLine-Aufruf zurück gekomment ist? sicher dass die gegenseite einen zeilenumbruch gesendet hat?
Ja, das ist mir auch gerade aufgefallen. Hab ein "\n" an der String gehängt, schon ist es da.

Nochmal herzlichen Dank für alles - das nächste problem kommt bestimmt ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
0 Socketverbindung zwischen PHP und Java? Netzwerkprogrammierung 6
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
F Verständnisfrage Verfügbarkeit Socketverbindung Netzwerkprogrammierung 5
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
reibi Socket Socketverbindung nutzt welches Protokoll? Netzwerkprogrammierung 5
L Socket Socketverbindung nur im lokalen Netzwerk Netzwerkprogrammierung 12
Q Problem bei Vergleichen von Strings übertragen über eine Socketverbindung Netzwerkprogrammierung 3
IT-MaD konstante Socketverbindung mit Verbindungscheck u. reconnect Netzwerkprogrammierung 5
M Socketverbindung funzt nich immer Netzwerkprogrammierung 3
P Array per Socketverbindung versenden Netzwerkprogrammierung 2
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
S Socketverbindung übers WWW Netzwerkprogrammierung 6
T :?: SHH, SSL, Tunneling bei Socketverbindung ? Netzwerkprogrammierung 6
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
J VideoStreaming zwischen 2 Geräten Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
F Verbindung zwischen Server und handy Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
D Chatprogramm zwischen zwei ChatClients (aktiv/passiv) Netzwerkprogrammierung 1
J Direkter Datenaustausch zwischen Servern Netzwerkprogrammierung 5
V Unterschied zwischen cURL und HttpURLConnection?? Netzwerkprogrammierung 2
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
V Datensätze zwischen verschiedenen Datenbanken kopieren Netzwerkprogrammierung 2
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
G Verbindung zwischen PC und Handy Netzwerkprogrammierung 10
K Datenaustausch zwischen Applet und JSP Netzwerkprogrammierung 4
C Verbindung zwischen 2 Computern herstellen Netzwerkprogrammierung 12
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
L RMI-Objekt zwischen zwei RMI-Servern kopieren Netzwerkprogrammierung 2
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
B Verbindung zwischen Client und Server Netzwerkprogrammierung 2
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
M RMI zwischen verschiedenen Java Versionen Netzwerkprogrammierung 2
N UDP zwischen Java und C++ funktioniert nicht. Netzwerkprogrammierung 4
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
P Zeit zwischen mehreren Client log-ins bestimmen. Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben