我正在尝试创建客户端/服务器聊天室程序,每个客户端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);
}
答案 0 :(得分:1)
要传递int,您需要一个DataOutputStream;然后你像这样调用writeInt
sockDataOut = new DataOutputStream(socket.getOutputStream());
sockDataOut.writeInt(11);
在客户端你做:
sockDataIn = new DataInputStream(socket.getInputStream());
sockDataIn.readInt();