整数不会通过套接字发送,并由客户端作为String接收

时间:2016-07-25 17:42:40

标签: java sockets

我正在尝试创建客户端/服务器聊天室程序,每个客户端GUI都需要显示从服务器发送的活动用户列表。为此,我需要在列表中为客户端发送用户数。但是,当我尝试在套接字上发送一个int时,它会抛出一个类型不匹配错误。更重要的是,如果我尝试将其作为字符串发送然后将其解析为int,则会出现随机的字母数字字符串。我知道我发送的变量绝对是一个整数但是我不明白发生了什么。我也留下了不同的解决方案作为评论。 服务器:

   public void updateClientUserList()
        {
            //int userListSize = userList.size();
            output.print((int)userList.size());


            for(int i = 0; i < userList.size(); ++i)
            {
                String user;
                user = userList.get(i).getUsername();
                output.println(user);
            }

            chatLog.add("New user(s) has joined the chatroom");

        }

客户端:

public static void updateUserList()
{
    String users = "";
    //String numInput = input.next();
    int userListSize = input.nextInt();//Integer.parseInt(numInput);

    //for(int i = 0; i < userListSize; ++i)
    //{
    //    String user = input.nextLine();
    //    userList.add(i, user);            
    //}

    //users = userList.get(0);

    for(int i = 0; i < userListSize; ++i)
    {
        users += input.nextLine();
    }

    userListBox.setText(users);

}

1 个答案:

答案 0 :(得分:1)

要传递int,您需要一个DataOutputStream;然后你像这样调用writeInt

sockDataOut = new DataOutputStream(socket.getOutputStream());
sockDataOut.writeInt(11);

在客户端你做:

sockDataIn = new DataInputStream(socket.getInputStream());
sockDataIn.readInt();