2016-12-29 6 views
-2

C# 클라이언트. C# 클라이언트에서 Java 서버로 데이터를 전송하는 중

here 게시물에 비슷한 문제가 있지만 모든 응답을 따라했지만 응답으로 빈 문자열이 있습니다. 데이터입니다. 바로 메시지를 전송 한 후 응답을 받기 전에

연결을 분리 :

try 
{ 
    string ENDOFLINE = "\r\n"; 
    TcpClient client = new TcpClient(txtIP.Text, Int32.Parse(txtPort.Text)); 
    NetworkStream stream = client.GetStream(); 

    byte[] data = Encoding.ASCII.GetBytes(txtMessage.Text + ENDOFLINE); 
    stream.Write(data, 0, data.Length); 

    String responseData = String.Empty; 
    Int32 bytes = stream.Read(data, 0, data.Length); 
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); 
    Console.WriteLine("Received: {0}", responseData); 
    stream.Close(); 
    client.Close(); 
} 
catch(Exception ex) 
{ 
    Console.WriteLine(ex.message); 
} 

솔루션 :
여기 내 코드입니다. 나는 이것을 따라 갔다. article

+2

항상 외부 링크를 통해서가 아니라 질문 자체에 코드를 게시하십시오. 따라서 링크가 죽으면 질문이 쓸모 없게되지는 않습니다. –

+0

@PeterB, 조언 해 주셔서 감사합니다. 게시물을 편집했습니다. – budiantoip

+0

Java가 sbyte가 아닌 바이트를 사용하기 때문에 C#에서 바이트 배열을 보낼 수 없습니다 ... 바이트 [] data = Encoding.ASCII .GetBytes (txtMessage.Text + ENDOFLINE); – Alrehamy

답변

2

서버 측이 협조적 일 때만 코드가 제대로 작동한다.

내가 약간 변경 실행 구현 Christian Tucker에서 간단한 자바 서버 구현함으로써 그것을 테스트 : 그의 OutputStreamWriter에 flush를 호출하지 않고

public void run() 
{ 
    while(isRunning) 
    { 
     try 
     { 
      clientSocket = serverSocket.accept(); 
      System.out.println("Client Connected from " + clientSocket.getInetAddress().getHostAddress() + ":" + clientSocket.getPort()); 
      recv = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
      System.out.println("Data Recieved: " + recv.readLine()); 

      // make sure to send something back ... 
      OutputStreamWriter wr = new OutputStreamWriter(clientSocket.getOutputStream()); 
      wr.write("FuBar!\r\n"); 
      // and flush! 
      wr.flush(); 

      clientSocket.close(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

을 나는 당신과 같은 결과를 얻었다 : 데이터가 성공적으로 보낼 수있어하지만 접수 빈 응답.

두 경우 모두 디버거에서 실행되는 데 도움이됩니다.

+0

흥미 롭다면, 나는 서버 측을 개발 한 사람을 점검 할 것이고, 잘하면 이것이 내 문제를 해결할 것이다. 일단 그것이 확인되면 귀하의 솔루션을 수락합니다. 당신의 도움을 주셔서 감사합니다. – budiantoip

+0

안녕하세요, 도움을 주셔서 감사합니다, 나는 마침내 올바른 해결책을 찾았습니다 :) – budiantoip