2012-01-11 6 views
1

からC#​​クライアントソケットでデータを受信して​​、私はC#クライアントソケットおよびJavaサーバソケットとソケットの接続を作成しています。 クライアントソケットからデータを送信しているときに、サーバーソケットがそのデータを正しく受信しています。 しかし、サーバーソケットからクライアントソケットにデータを送り返そうとすると、データを受信する際にクライアント側でハングアップしています。エラーがJavaサーバソケット

クライアント側コード(C#.NETで)

  clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 

      string hostName = System.Net.Dns.GetHostName(); 
      System.Net.IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(hostName); 
      System.Net.IPAddress[] ipAddresses = hostEntry.AddressList; 
      System.Net.IPEndPoint remoteEP = 
       new System.Net.IPEndPoint(ipAddresses[ipAddresses.Length - 1], port); 
      clientSocket.Connect(remoteEP); 
      string sendData = inputFilePath; 
        byte[] byteDataSend = System.Text.Encoding.ASCII.GetBytes(sendData); 
        clientSocket.Send(byteDataSend); 

        int receivedBufferSize = clientSocket.ReceiveBufferSize; 
        byte[] recivedData = new Byte[receivedBufferSize]; 
        int receivedDataLength = clientSocket.Receive(recivedData); 
        string stringData = Encoding.ASCII.GetString(recivedData, 0, receivedDataLength); 
        textFilePath = stringData; 
        Console.Write(stringData); 
        clientSocket.Close(); 

(Javaでは)サーバソケットコード

  Socket connection = server.accept(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
      fileName = in.readLine(); 
      convertedFile =runConverter.convertDocumet(fileName); 
      byte[] sendingData = convertedFile.getBytes("US-ASCII"); 
      DataOutputStream dos = new DataOutputStream(connection.getOutputStream()); 
      dos.write(sendingData, 0, sendingData.length); 

問題は何で教えてください? 助けてください... C#のコードのようなもので

答えて

0

通常の問題は、同期が受け取るあります。
this answerのように、常に非同期読み取りを行うことをおすすめします。

私はそれがあなたの問題の原因だとは思っていませんが、少しのロギングで非同期受信を実装した場合、問題が解決されるか、問題はです。 Aは、JavaはC#がリッスンしている同じソケットにデータを送信するので、それらのエンドポイントにも良いアイデアすることができ、ダブルチェックされていないことを示唆しているん受信同期にハングアップ

希望に役立ちます!

関連する問題