我有一个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设备上。