Socketverbindung zwischen Javaclient und C-Server



  • 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:

    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:

    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

    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


Anmelden zum Antworten