次のコードは、ポート15000でパケットを送信します。
int port = 15000;
UdpClient udp = new UdpClient();
//udp.EnableBroadcast = true; //This was suggested in a now deleted answer
IPEndPoint groupEP = new IPEndPoint(IPAddress.Broadcast, port);
string str4 = "I want to receive this!";
byte[] sendBytes4 = Encoding.ASCII.GetBytes(str4);
udp.Send(sendBytes4, sendBytes4.Length, groupEP);
udp.Close();
しかし、それを別のコンピューターで受け取れないとしたら、それはちょっと役に立たない。必要なのは、LAN上の別のコンピューターにコマンドを送信し、それを受信して何かを実行することだけです。
Pcapライブラリを使用せずに、これを実現する方法はありますか?私のプログラムが通信しているコンピューターはWindows XP 32ビットで、送信側のコンピューターは違いがあればWindows 764ビットです。さまざまなnet send
コマンドを調べましたが、私はそれらを理解することはできません。
また、コンピューターに「ipconfig」と物理的に入力できるため、コンピューター(XP one)のローカルIP)にもアクセスできます。
EDIT:これが私が使用しているReceive関数で、どこかからコピーされています。
public void ReceiveBroadcast(int port)
{
Debug.WriteLine("Trying to receive...");
UdpClient client = null;
try
{
client = new UdpClient(port);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
IPEndPoint server = new IPEndPoint(IPAddress.Broadcast, port);
byte[] packet = client.Receive(ref server);
Debug.WriteLine(Encoding.ASCII.GetString(packet));
}
ReceiveBroadcast(15000)
を呼び出していますが、出力がまったくありません。
これは、UDPパケットを送受信するためのサーバーとクライアントのsimple
バージョンです。
サーバー
IPEndPoint ServerEndPoint= new IPEndPoint(IPAddress.Any,9050);
Socket WinSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
WinSocket.Bind(ServerEndPoint);
Console.Write("Waiting for client");
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0)
EndPoint Remote = (EndPoint)(sender);
int recv = WinSocket.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}:", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
クライアント
IPEndPoint RemoteEndPoint= new IPEndPoint(
IPAddress.Parse("ServerHostName"), 9050);
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
string welcome = "Hello, are you there?";
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, RemoteEndPoint);
実際、MSDNにはサーバーとリスナーの非常に優れたUDPの例があります。 単純なUDPの例