不同类之间的java函数调用
我有三个独立的类,分别是login。java,实时监控。java和HandleMultipleClient。JAVA以下是所有相应类的代码
登录。爪哇
try
{
serverSock = new ServerSocket(2101);
while (true)
{
sock = serverSock.accept();
HandleMultipleClients hmc=new HandleMultipleClients();
hmc.Connect(sock);
}
HandleMultipleClient。爪哇
public class HandleMultipleClients
{
Map<Integer, java.net.Socket> clients = new HashMap<Integer, java.net.Socket> ();
Socket soc;
ServerSocket serverSock;
DataOutputStream dos;
DataInputStream dis;
public HandleMultipleClients()
{
}
public void Connect(Socket sock)
{
soc=sock;
clients.put(soc.getPort(), soc);
}
public void messagetospecificclients(String ipaddress,String choice) throws IOException, InterruptedException
{
System.out.print(ipaddress+"\n"+choice);
for (Iterator<Integer> iter = clients.keySet().iterator(); iter.hasNext(); )
{
System.out.print("ok1");
int key = iter.next();
java.net.Socket client = clients.get(key);
InetAddress zee = client.getInetAddress();
String s = zee.getHostAddress();
System.out.print(s);
if (zee.getHostAddress().equals(ipaddress))
{
System.out.print("ok2");
dos =new DataOutputStream(client.getOutputStream());
dos.writeUTF(choice);
}
现场监控。爪哇
HandleMultipleClients hmc=new HandleMultipleClients();
try
{
hmc.messagetospecificclients("192.168.1.102","apps");
}
现在的问题是当我给hmc打电话时。MessageToSpecificClient(“192.168.1.102”、“应用程序”);它进入HandleMultipleClients类,只打印IP地址和应用程序,但不通过for循环。请告诉我我做错了什么
# 1 楼答案
您正在创建对象的实例,并在此处向其添加“客户端”:
但你永远不会在那个实例上调用
messagetospecificclients()
然后创建另一个实例并在此处调用该方法:
但您从未调用上的
Connect()
来向该实例添加客户端(打个比方……假设你有两辆完全相同的车。同一品牌、同一型号、来自同一条生产线。你在其中一辆车里加油。你试图驾驶另一辆车。但你不能,因为车里没有汽油。)
对具有已设置值的实例调用
messagetospecificclients()
: