2011-10-31 3 views
1

안드로이드 기반 클라이언트와 C# 기반 서버 사이에서 통신하고 싶습니다. 나는 이미 그것을했다 ..하지만 안드로이드 기반의 클라이언트에 바이트 배열을 보내고 싶습니다 .. 일반적으로 문자열 값을 보내 .. 내가 바이트 배열을 보낼 때 그것은 나던 일 !! C#에서는 바이트 배열에 소켓 클래스에있는 함수를 보낼 수 있습니다.하지만 자바 쪽에서는 아무 생각이 없습니다. 내가 DatagramSocket로 사용할 수 있음을 검색 ..하지만 소켓 클래스와 함께하고 싶어 .. 그럼이 당신이 보는 바와 같이안드로이드 클라이언트 커뮤니케이션

public void Send(byte[] buffer) 
     { 
      try 
      {     
       cSocket.Send(buffer); 
      } 
      catch (SocketException s_ex) 
      { 
       Console.WriteLine(s_ex); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
     } 
     public void ReceiveListen() 
     {    
      while (true) 
      { 
       try 
       { 
        buffer = new byte[8192]; 

       int socketStatus = cSocket.Receive(buffer); 
        if (socketStatus!= 0) 
        { 
         Array.Resize(ref buffer, socketStatus); 

        Parse(buffer); 
       } 
      } 
      catch 
      { 
      } 

      Thread.Sleep(100); 
     } 
    } 

, 내가 바이트 배열을 전송하고 동일한 유형을받을 수 있습니다 .. C#을 측면에 ... 안드로이드 사이드에서 , 나는 (내가 스트림 클래스로 보낼 수 있습니다 .. C#에서 스트림 클래스가 있습니다 .. 일반적으로 내가 클라이언트에 문자열 값을 전송 (안드로이드) 작동 ..)이 코드를 사용

 try { 
      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
         String line = null; 
         while ((line = in.readLine()) != null) { 
          Log.d("ServerActivity", line); 
          handler.post(new Runnable() { 
           @Override 
           public void run() { 
            serverStatus.setText("Connected"); 
           } 
          }); 
         } 
         break; 
        } catch (Exception e) { 
         handler.post(new Runnable() { 
          @Override 
          public void run() { 
           serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones."); 
          } 
         }); 
         e.printStackTrace(); 
        } 

글쎄 .. 그것은 문자열 값과 함께 작동 .. 알다시피 .. getInputStream() 함수가 .. 그리고 그것은 문자열 값을 기대 .. 음,이 functi 에 소켓 클래스에 따라 달라집니다 .. 그러나 내가 대신는 getInputStream()의 arrray 바이트 유도 할 수있는 기능 ... 나는 나뿐만 아니라 내 문제를 설명 할 수있는 희망

..

당신에게

+0

Integer.toString (1234567890)을 시도해 볼 수 있습니다. – Yahor10

답변

1

감사 필요 socket.getInputStream(). read (byte [] b)를 시도해야합니다. 서버는 바이트 배열 앞에 바이트 수를 전송하여 클라이언트가 예상되는 바이트 수를 알 수 있도록 할 수도 있습니다.

+0

와우 그 흥미로운 .. 나는 그것을 결코 시도하지 않는다. .. 그리고 나는 갈 것이다. 그것은 멋지다!! 감사 – ertan2002

관련 문제