从扫描程序到DataOutputStream的字符串

时间:2018-01-28 09:58:50

标签: java-8

尝试使用Java编写聊天代码,但是我在从Scanner到DataOutputStream输入字符串时遇到了问题。 客户部分:

public class Greetings extends Packet{


private String nickname;
public Greetings(){}
public Greetings(String nickname)
{
    this.nickname = nickname;
}

@Override
public int getId() {
    System.out.print(nickname);
    return 120;
}

@Override
public void send(DataOutputStream dos) {
    System.out.print("GOT IT");
    try {
        dos.writeUTF(nickname);
        System.out.println("Nickname "+nickname);
        dos.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Override
public void receive(DataInputStream dis) {

}

}

如果我在没有扫描仪的情况下发送信息(如硬编码名称和ID),则可以正常工作。

问候包代码:

 //For each new client new handler
public class ClientHandler extends Thread {
private Socket socket;
public ClientHandler(Socket socket)
{
    this.socket = socket;
    start();
}
public void run()
{
    while (true)
    {   try {
        if (!isInterrupted())
        {DataInputStream dis = new     
         DataInputStream(socket.getInputStream());
        if (dis.available() > 0)
        {
            Packet p = PacketManager.getPacketById(dis.readInt());
            p.receive(dis);
            p.handle();

        }} } catch (SocketException se)
          {} catch (IOException e)
            {} finally {
        end();
    }
    }
}

private void end()
{
    interrupt();
    try {
        socket.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
}

看起来像我看不见的东西是愚蠢的,这让我发疯了。

服务器部分:

{{1}}

看起来像smt简单,我只是看不到。就像,扫描仪的字符串和通常的字符串之间有一些不同。但他们的十六进制代码是相同的......

将INT和STRING写入dataOutuputStream时出现问题。

0 个答案:

没有答案