最近编了一个简单的联网小游戏,可是客户端的用户名总是不能实现唯一指定,我的思路是在服务器设置一个字符串容器  然后客户端登录时设定好用户名后就会判断该用户名在服务器的字符串容器中是否存在,如果存在就报错,不存在继续执行,同时把该用户名放进容器中这是把用户名加进服务器字符串容器的一段代码b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = tfName.getText();
for(int index = 0;index<TankServer.names.size();index++) {
String str = TankServer.names.get(index);
if(name.equals(str)) {
nedg.setVisible(true);//报错
return;
}
}
int udpPort = Integer.valueOf(tfUdpPort.getText());
String IP = tfIP.getText();
nc.setUdpPort(udpPort);
TankServer.names.add(name);//把用户设置的用户名放进服务器的字符串容器中
myTank.name = name;
nc.connect(IP,TankServer.TCP_PORT);
udg.setVisible(false);
}
});

解决方案 »

  1.   

    补充一下,我用DeBug测试发现每次开启一个客户端后,服务器的字符串容器(静态的)总是为空,无论前面连接了多少个客户端,也就是说我每次执行TankServer.names.add(name;好像没有作用?不知道是为什么???
      

  2.   

    user@host/ip 只显示 user
      

  3.   

    TankServer里面的names以及add方法怎么定义的
      

  4.   

    static List<String> names = new ArrayList<String>();
    那个add方法是容器类自身带的,不需要定义的,就是把实参类放进容器中!