2017-05-21 4 views
0

Ich versuche, Client-Server-Kommunikation einzurichten, wobei C# die Serverseite und Java die Clientseite ist. Die Verbindung ist erfolgreich und ich bin in der Lage, eine Zeichenfolge von C# nach Java zu senden. Ich habe jedoch Probleme beim Senden einer Zeichenfolge von Java nach C#. Der Server erhält keinen Eingang.Java Client C# Server sendet das Problem

Mein Code ist folgende: Server Side C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 
using System.IO; 

namespace ServerToJava 
{ 


    class Program 
    { 
     static void Main(string[] args) 
     { 

      TcpListener serverSocket = new TcpListener(5678); 
      int requestCount = 0; 
      TcpClient clientSocket = default(TcpClient); 
      serverSocket.Start(); 
      Console.WriteLine(" >> Server Started"); 
      clientSocket = serverSocket.AcceptTcpClient(); 
      Console.WriteLine(" >> Accept connection from client"); 

      requestCount = 0; 
      NetworkStream networkStream = clientSocket.GetStream(); 


      try 
      { 
       requestCount = requestCount + 1; 

       string serverResponse = "Last Message from client server This is a test"; 
       Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse); 
       networkStream.Write(sendBytes, 0, sendBytes.Length);   

       Console.Write ("ReadClient Thread started"); 
       int length = networkStream.ReadByte(); 
       byte[] buffer = new byte[length];  
       int size = networkStream.ReadByte(); 
       byte[] buff = new byte[size]; 
        using (var memoryStream = new MemoryStream(buff,false)) { 
        using (var streamReader = new StreamReader(memoryStream, Encoding.UTF8)) { 
       var message = streamReader.ReadLine(); 
       buff = Encoding.UTF8.GetBytes(message); 
       networkStream.Read(buffer, 0 ,buffer.Length); 
       Console.Write (message); 
       networkStream.Flush(); 
      } 

     } 

    } 
    catch (Exception ex) 
    { 
    } 
    clientSocket.Close(); 
    serverSocket.Stop(); 
    Console.WriteLine(" >> exit"); 
    Console.ReadLine(); 
     } 

    } 
} 

Client Side Java

OutputStream out; 
      Socket s = new Socket("127.0.0.1", 5678); 

      BufferedReader input = 
        new BufferedReader(new InputStreamReader(s.getInputStream())); 

      String answer = input.readLine(); 
      JOptionPane.showMessageDialog(null, answer); 
      out= s.getOutputStream(); 
      out.write('a'); 
      System.exit(0); 

Antwort

0

Sie sollten new TcpListener(5678) nicht verwenden es ist Veraltet, stattdessen verwenden Folgendes:

// Set the TcpListener on port 5678. 
    Int32 port = 5678; 
    IPAddress localAddr = IPAddress.Parse("127.0.0.1"); 


    TcpListener server = new TcpListener(localAddr, port); 

Source` MSDN

+0

Ok ich es geändert. Allerdings kann ich immer noch nicht schreiben auf Server – christine

+0

Das ist bereits in meinem Java-Code geschrieben – christine

+0

Auch habe ich in Beispielen für Java-Server festgestellt, dass sie "localhost" anstelle von "127.0.0.1" verwenden, versuchen Sie es für C# Server –