不同类别之间的函数调用
我有三个独立的类,分别是login.java,LiveMonitoring.java和HandleMultipleClients.java。以下是所有各个类的代码不同类别之间的函数调用
Login.java
try {
serverSock = new ServerSocket(2101);
while (true)
{
sock = serverSock.accept();
HandleMultipleClients hmc=new HandleMultipleClients();
hmc.Connect(sock);
}
HandleMultipleClients.java
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);
}
LiveMonitoring.java
HandleMultipleClients hmc=new HandleMultipleClients(); try
{
hmc.messagetospecificclients("192.168.1.102","apps");
}
现在的问题是,当我打电话HMC .messagetospecificclients( “192.168.1.102”, “应用程序”);它转到HandleMultipleClients类,只是打印IP地址和应用程序,但它不通过for循环。请告诉我我做错了什么。
回答:
正在创建的对象的实例,在这里增加一个“客户”来了:
HandleMultipleClients hmc=new HandleMultipleClients(); hmc.Connect(sock);
但你永远不会调用messagetospecificclients()
在该实例。
然后创建另一个实例并调用这里方法:
HandleMultipleClients hmc=new HandleMultipleClients(); try
{
hmc.messagetospecificclients("192.168.1.102","apps");
}
但你从来没有所谓的Connect()
上是实例客户端添加到它。 (作为一个比喻...想象一下,你有两辆相同的汽车,同样的车型,同一型号,从同一条生产线上出来,你把汽油放在其中一辆汽车上,而你试图驾驶。其他人,但你不能,因为它没有气的话)的情况下
呼叫messagetospecificclients()
其中有已设置的值:
HandleMultipleClients hmc=new HandleMultipleClients(); hmc.Connect(sock);
try
{
hmc.messagetospecificclients("192.168.1.102","apps");
}
以上是 不同类别之间的函数调用 的全部内容, 来源链接: utcz.com/qa/264089.html