如何在本地区域点对点网络中查找在线用户?

时间:2015-08-14 12:18:29

标签: java android networking lan

我目前正在开发一个小型点对点应用,用户可以在局域网中相互聊天。我目前已经为他/她在线的用户实施了以下代码广播

import java.io.*;
import java.net.*;
class BroadcastOnline extends Thread{
    public void run(){
        try{
            String string = "a";
            DatagramSocket serverSocket = new DatagramSocket();
            InetAddress IPAddress = InetAddress.getByName("255.255.255.255");
            byte[] sendData = new byte[1];
            sendData = string.getBytes();
            for(;;){
                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9877);
                serverSocket.send(sendPacket);
                Thread.sleep(1000);
            }    
        } catch (Exception e){}
    }
}

我已使用以下代码查找在线人员。

import java.io.*;
import java.net.*;
class FindUsers { 
    InetAddress ad;
    String ipaddress;
    String onlineUsers[] = new String [10];
    FindUsers() throws Exception{
        DatagramSocket clientSocket = new DatagramSocket(9877);
        int count=0;
        byte[] receiveData = new byte[1];
        for(int i=0;i<=9;i++){                   
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            clientSocket.receive(receivePacket);
            String sentence = new String( receivePacket.getData());
            ad = receivePacket.getAddress();
            ipaddress = ad.getHostAddress();
            onlineUsers[i]=ipaddress;
            count++;
        }
    }
}

问题是上述代码在无限循环中运行。我认为实施有点傻。

有没有其他方法可以实现此功能?

修改 我得到了列表中列出IP地址的解决方案。 如何在列表中获取并保留用户友好名称?

0 个答案:

没有答案