내가 실제로하고 싶은 것은 wifi를 통해 메시지를 브로드 캐스트하는 것입니다 (다른 셀에 내가 작성한 앱이 실행 중이지만 IP는 아직 모르는 경우). 와이파이를 통해 그 장치의 IP와 메시지, 나는 이상적인 조건 에서이 장치는 두 장치가 같은 응용 프로그램을 실행하는 내가이 장치에 다른 장치에 wifi를 통해 메시지를 방송하는 기능을 추가하려면 원하는 만든 생각하고 있어요, 가능합니다 또는 어떻게?다른 휴대 기기의 IP 주소를 얻는 방법은 무엇입니까?
2
A
답변
3
Java로이 데모 프로그램을 만들었습니다. 각 호스트 (Android 기기)는 클라이언트 코드와 서버 코드를 모두 실행합니다. 클라이언트는 계속해서 멀티 캐스트 주소에 IP 주소를 게시합니다. 멀티 캐스트 주소에서는 다른 모든 장치가이를 수신하고 추적합니다. 똑같은 장치는 동일한 멀티 캐스트 주소의 수신기이기 때문에 다른 Androids가 패킷을 보낼 때이를 발견 할 수 있습니다. 이 아키텍처는 리소스 사용에 매우 부담이되며 전혀 확장되지 않습니다. 단순히 데이터 그램과 재생이 쓴 또한 멀티 캐스트 포장이 안드로이드 스택에 의해 필터링되기 때문에 당신은 그래서 당신이 권한 android.permission.CHANGE_WIFI_MULTICAST_STATE
이 필요합니다 안드로이드 부분에 관한 질문
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class Main {
public static final int PORT = 2345;
public static final String MULTICAST = "224.0.0.99";
/*
* A simple server that prints the name of the first
* device discovered and then terminates
*/
static class Server extends Thread{
@Override
public void run() {
try {
MulticastSocket socket = new MulticastSocket(PORT);
InetAddress group = InetAddress.getByName(MULTICAST);
socket.joinGroup(group);
byte[] buf = new byte[256];
// receive request
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
System.out.printf("SERVER receives: %s", new String(packet.getData()));
socket.leaveGroup(group);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
* This client send own IP address to all machines
* listening on MULTICAST
*/
static class Client extends Thread{
@Override
public void run() {
try {
MulticastSocket socket = new MulticastSocket();
socket.setBroadcast(true);
byte[] buffer = "I'm a new client. My IP is XXX.XXX.XXX.XXX".getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST), PORT);
socket.send(packet);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException {
new Server().start();
Thread.sleep(1000); // Make sure server started
new Client().start();
}
}
에 가장 가까운 답을 보인다 will be use WifiManager.MulticastLock
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiManager.MulticastLock multicastLock = wm.createMulticastLock("mydebuginfo");
multicastLock.acquire();
1
나는 이것에 대해 정확히 며칠 전에 생각하고있었습니다. 결론은 DHCP를 통해 얻을 수있는 장치의 IP로 릴레이 할 수없고 매번 바뀔 수 있다는 것입니다. 따라서 매우 쉬운 방법은 전자 메일에 첨부 된 데이터를 보내어 수신기로 보내는 것입니다.
데이터를 읽을 수있는 파서 (XML 파일로 작성되었다고 가정)를 구현하고 수신기에서 필요한 것을 수행해야합니다. 이를 위해 귀하가 전송하는 파일 형식의 의도 ACTION_VIEW에 응답하는 올바른 구성 요소 (활동)를 등록해야합니다. XML.
희망 하시겠습니까?
관련 문제
- 1. 안드로이드에서 휴대 기기의 휴대 전화 번호를 얻는 방법은 무엇입니까?
- 2. PHP에서 사용자의 IP 주소를 얻는 방법은 무엇입니까?
- 3. .NET에서 서버의 IP 주소를 얻는 방법은 무엇입니까?
- 4. C#에서 IP 주소를 얻는 방법은 무엇입니까?
- 5. LAN에서 외부 IP 주소를 얻는 방법은 무엇입니까?
- 6. Android 에뮬레이터의 IP 주소를 얻는 방법은 무엇입니까?
- 7. 클라이언트의 컴퓨터에서 IP 주소를 얻는 방법은 무엇입니까?
- 8. 호스트 이름으로 IP 주소를 얻는 방법은 무엇입니까?
- 9. 내부 IP 주소를 얻는 방법?
- 10. IP 주소를 얻는 방법?
- 11. 휴대 전화를 액세스 포인트로 사용하는 기기의 IP 주소
- 12. 휴대 기기의 위치 정보 서비스
- 13. 클라이언트 IP 주소를 얻는 방법?
- 14. 휴대 기기의 화면 공간을 찾는 방법은 무엇입니까?
- 15. 휴대 기기의 화면 해상도를 감지하는 방법은 무엇입니까?
- 16. 휴대 기기의 경도와 위도를 구하는 방법은 무엇입니까?
- 17. 휴대 전화의 공용 IP 주소를 얻으려면 어떻게해야합니까?
- 18. IP 주소를 얻는 펄 코드
- 19. PageMethod에서 IP 주소를 얻는 방법?
- 20. 클라이언트 IP 주소를 얻는 방법
- 21. 정적 IP 주소를 얻는 방법?
- 22. 클라이언트 IP 주소를 얻는 방법
- 23. WiFi Direct에서 비 그룹 소유자의 IP 주소를 얻는 방법은 무엇입니까?
- 24. 다른 Facebook 사용자의 IP 주소를 얻는 가장 좋은 방법
- 25. 자신의 IP 주소를 얻으십시오
- 26. 휴대 기기의 jquery .appendTo()
- 27. 허용 된 인바운드 소켓의 IP 주소를 얻는 방법은 무엇입니까?
- 28. 클라이언트 측에서 IP 주소를 사용하여 GMT 시간을 얻는 방법은 무엇입니까?
- 29. TCP 반 연결을 생성하는 클라이언트의 IP 주소를 얻는 방법은 무엇입니까?
- 30. JavaScript를 사용하여 로컬 IP 주소를 얻는 방법은 무엇입니까?
iPhone 용 Bonjour 서비스와 같은 것을 들려주고 싶나요? http://stackoverflow.com/questions/2474143/how-can-i-discover-zeroconf-bonjour-services-on-android-im-having-trouble-wi –