0

我有一个不在java中的tcp服务器,它也是一个硬件设备,我需要发送和接收数据,

我正在连接服务器并使用以下代码发送一些配置数据

         this.clientSocket=new Socket("198.168.1.17",9999);
        this.os=new DataOutputStream(this.clientSocket.getOutputStream());
        this.in=new DataInputStream(this.clientSocket.getInputStream());
        System.out.println("Conncted");


          char data[]={0x03,0x03,0x00};
            byte b[]=new byte[data.length];
          for (int i = 0; i < b.length; i++) {
              b[i] = (byte) data[i];
             }
            try {
                os.write(b);

设备正确接收数据,现在在我的 tcp 客户端中我无法接收数据,尽管我在上面的代码之后编写了以下代码

            int size =in.available();
                byte data1[]=new byte[size];
              //  in.read(data1);
                String str=new String(data1);
                System.out.println("Reading data:"+str);

它只显示读取数据,字符串没有数据我也尝试过线程中的代码

      public void run(){
try{
    while(true){
        int size =in.available();
        byte data[]=new byte[size];
        in.read(data);
        String str=new String(data);
        System.out.println("Reading data:"+str);



    }

在线程中它只显示读取数据,请帮助我如何从服务器获取数据还请注意服务器是内置的,我无法更改服务器代码

4

2 回答 2

0

available() 方法在代码“int size =in.available();”中做了什么?????????

解决方案可能是: available() 方法返回 0,因此您无法接收数据。

于 2012-05-21T04:25:24.737 回答
0

使用此代码从套接字接收数据。在 onCreate 之前编写此代码。

private EditText mInputMessageView;
    private Emitter.Listener onNewMessage = new Emitter.Listener() {
        @Override
        public void call(final Object... args) {
            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    JSONObject data = (JSONObject) args[0];
                    String username;
                    String message;
                    try {
                        username = data.getString("username");
                        message = data.getString("message");
                    } catch (JSONException e) {
                        return;
                    }

                    // add the message to view
                    addMessage(username, message);
                }
            });
        }

    }; 
于 2018-08-22T17:37:28.300 回答