Android Client socket , how to read data?

后端 未结 2 1322
执念已碎
执念已碎 2020-12-30 13:53

here\'s my full code: the cnx is established , and i am sending data to server , but i cant read anything from the server...

public class client extends Acti         


        
相关标签:
2条回答
  • 2020-12-30 14:18
     package some;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    public class NetClient {
    
        /**
         * Maximum size of buffer
         */
        public static final int BUFFER_SIZE = 2048;
        private Socket socket = null;
        private PrintWriter out = null;
        private BufferedReader in = null;
    
        private String host = null;
        private String macAddress = null;
        private int port = 7999;
    
    
        /**
         * Constructor with Host, Port and MAC Address
         * @param host
         * @param port
         * @param macAddress
         */
        public NetClient(String host, int port, String macAddress) {
            this.host = host;
            this.port = port;
            this.macAddress = macAddress;
        }
    
        private void connectWithServer() {
            try {
                if (socket == null) {
                    socket = new Socket(this.host, this.port);
                    out = new PrintWriter(socket.getOutputStream());
                    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private void disConnectWithServer() {
            if (socket != null) {
                if (socket.isConnected()) {
                    try {
                        in.close();
                        out.close();
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        public void sendDataWithString(String message) {
            if (message != null) {
                connectWithServer();
                out.write(message);
                out.flush();
            }
        }
    
        public String receiveDataFromServer() {
            try {
                String message = "";
                int charsRead = 0;
                char[] buffer = new char[BUFFER_SIZE];
    
                while ((charsRead = in.read(buffer)) != -1) {
                    message += new String(buffer).substring(0, charsRead);
                }
    
                disConnectWithServer(); // disconnect server
                return message;
            } catch (IOException e) {
                return "Error receiving response:  " + e.getMessage();
            }
        }
    
    
    }
    

    //---------------------------Use NetClient------------------------------------------------

    NetClient nc = new NetClient(host, port, mac); //mac address maybe not for you
    nc.sendDataWithString("your data");
    String r = nc.receiveDataFromServer();
    

    This is our android socket client works fine with Python server socket, Hope it will help you.

    0 讨论(0)
  • 2020-12-30 14:19
    HttpResponse response = m_httpClient.execute( request );
    String result = "";
    if( response.getStatusLine().getStatusCode() == HttpStatus.SC_OK )
    {
    // open stream
          InputStream stream = response.getEntity().getContent();
    
          if( stream != null )
          {
            int len = 0;
            byte[] buf = new byte[ 1024 ];
    
            try
            {
              ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    
              while( ( len = stream.read( buf ) ) > 0 )
              {
                outputStream.write( buf, 0, len );
              }
    
              buf = outputStream.toByteArray();
              result = EncodingUtils.getAsciiString( buf );
            }
            catch( IOException e )
            {
              e.printStackTrace();
            }
            finally
            {
              stream.close();
            }
    }
    
    0 讨论(0)
提交回复
热议问题