현재 WiFi를 통해 원격 임베디드 시스템과 통신해야하는 Windows 응용 프로그램에서 작업하고 있습니다. Windows 응용 프로그램은 원격 장치가 수신하는 브로드 캐스트 메시지를 보내고 보낸 사람 IP를 추출합니다. 그런 다음 원격 장치는 추출 된 IP에 응답을 보냅니다. 문제는 브로드 캐스트 메시지를 보낼 때 C#이 무선 네트워크 연결을 사용하지만 소켓을 열어 응답을 수신하거나 지정된 주소로 메시지를 보내는 경우 로컬 영역 연결을 사용하고 있다는 것입니다. 이러한 인터페이스에는 IP 주소가 다르므로 Windows 응용 프로그램에서는 원격지에서 응답을받지 못합니다.C#에서 소켓을 사용하는 활성 네트워크 인터페이스
내 질문에 C#이 다른 소켓에 다른 네트워크 인터페이스를 사용하고 프로그램이 모든 소켓에 동일한 인터페이스를 사용하도록하는 방법이 있습니까?
여기
sockB = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); //Create a UDP socket
sockB.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); //Enable broadcast on socket
IPEndPoint briep = new IPEndPoint(IPAddress.Broadcast, 9584); //Relate a port to the broadcast address
byte[] dat = { 0xAD, 0xEE, BRDCST_CMND, (byte)(0xAD^0xEE^BRDCST_CMND) }; //Put in buffer
sockB.SendTo(dat, briep); //Broadcast data
을 브로드 캐스트 메시지를 전송하는 코드를하고 여기에 리모트
sockC = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //Create an udp socket
sockC.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1); //set timeout to 5 ms
sockC.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9999); //set up an "any" ip address and associate it with port 9854
EndPoint ep = (EndPoint)(iep); //Make an endpoint out of previous association
sockC.Bind(iep); //Bind the created socket to listen on port 9854
byteRecv = sockC.ReceiveFrom(data, ref ep); //Receive on socke
이 감사에서 답변에서 청취 코드입니다!
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("wireless adapter IP here"), 9999);
IPAddress.Any
이은, 지금까지의 내가 아는 한, 모든 청취한다 : 당신이 당신의 무선 어댑터에받을 강제하려면
'로컬 영역 연결'이라고 말하면 유선 네트워크 연결이라고 생각하십니까? 무선은 또한 LAN에 연결할 수 있습니다. IP, 서브넷 마스크 및 게이트웨이가 올바르게 구성된 경우 연결을 자동으로 대상 주소로 라우팅 할 수 있어야합니다. –
ipconfig에서 로컬 영역 연결이라는 네트워크 인터페이스를 의미합니다. 그것은 유선으로 라우터에 연결됩니다. IP, 서브넷 마스크 및 게이트웨이가 올바르게 구성되었는지는 모르겠지만 어떻게 확인할 수 있습니까? – user1765962