Java套接字:无法发送正确的数据

时间:2018-01-19 07:57:26

标签: java android sockets tcp

我有一个Java TCP服务器和一个android TCP客户端。我正在尝试从客户端向服务器发送数据。发送数据似乎工作正常,但发送的数据似乎已损坏。

        Socket connectionSocket = socket.accept();
        BufferedReader inFromClient = new BufferedReader(new InputStreamReader( connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

        clientSentence = inFromClient.readLine();

        System.out.println(clientSentence);
        System.out.println(clientSentence.split(":")[0]);
        if(clientSentence.split(":")[0].equals("packet"))
        {

当服务器收到数据时,打印件在控制台中显示如下内容:

packet:user:pass
packet

这是预期的。但是我仍然没有回归真实。好像从套接字获取的“数据包”字符串不同于我在源代码中用键盘输入的字符串。我甚至无法从控制台复制文本。当我用鼠标复制并将其粘贴到某处时,它只复制第一个字符。 我在客户端使用相同的结构,并使用[DataOutputStream].writeChars(message)

发送数据包

我不知道这是不同的字符编码导致这个或其他东西。另外值得注意的是,当我使用wireshark捕获文本时,字符串就像“.p.a.c.k.e.t”

感谢。

编辑:根据要求,客户端代码是这样的:

 Socket clientSocket = new socket("127.0.0.1", 1234);
 BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream());
 DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

 String message = "packet:" + username + ":" + password + "\n";

 outToServer.writeChars(message);

它在Android设备上。

0 个答案:

没有答案