2012-05-18 28 views
1

我正尝试与RCON端口上的我的Minecraft服务器进行通信。Android :: TCP包

我有一点线索如何使用插槽&流的东西虽然。 扯开,我发现他们都有一些共同点。 Socket,InputStream & OutputStream。

我在我的代码中试过了,但返回时没有任何用处。 我知道代码实际上发送了一个数据包,因为我从服务器控制台[Rcon连接来自:/1.2.3.4]得到确认。

它只是我试图根据interwebs组装的代码返回类似于[B @ 4053f750 from output。不知道那是什么,也不能在Google中搜索它。

有人可以给一个很好的网站来解释这个东西吗?

谢谢你一堆。

Socket s; 
InputStream i; 
DataInputStream iD; 
OutputStream o; 
DataOutputStream oD; 

OnClickListener listenA=new OnClickListener(){ 
    public void onClick(View v){ 
     try{ 
      s=new Socket("MyDomain.tld", 12345); 
      i=s.getInputStream(); 
      iD=new DataInputStream(i); 
      o=s.getOutputStream(); 
      oD=new DataOutputStream(o); 

      byte[] data=new byte[1024], packet={ 
       (byte)0xFE, (byte)0xFD, // Magic bytes 
       (byte)0x09,     // Challenge type 
       (byte)0xde, (byte)0xad, (byte)0xbe, (byte)0xef // Your ID token 
      }; 


      o.write(packet); 
      i.read(data, 0, 1024); 

      guiMain.setTxt_Edit(encodeCArray(data.toString())); // returns a hex string to an edit box. I can then compare the packet to what I expect. 

      s.close(); 
     }catch(UnknownHostException e){ 
      e.printStackTrace(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
    } 
}; 
+0

'[B @ 4053f750'是一个字节数组的无用'的toString()'。使用'java.util.Arrays.toString(data)'有更好的输出。 – Jerome

+0

您需要检查“i.read(data,0,1024);”因为如果读取字节它可能返回不同的数量。 –

回答

2

尝试代替:

guiMain.setTxt_Edit(encodeCArray(new String(data)))