2011-11-25 3 views
5

UDPクライアント/サーバー接続の場合、この偉大なコードがMSDNで見つかりましたが、クライアントはサーバーにのみ送信できます。サーバーがメッセージを送信するクライアントに応答できるようにするには、どうすればよいですか。 サーバーUDPリスナーがクライアントに応答しました

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 
using System.IO; 
using System.Security.Cryptography; 


namespace UDP_Server 
{ 
    class Program 
    { 
     private const int listenPort = 11000; 

     private static void StartListener() 
     { 
      bool done = false; 

      UdpClient listener = new UdpClient(listenPort); 
      IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort); 
      try 
      { 
       while (!done) 
       { 
        Console.WriteLine("Waiting for broadcast"); 
        byte[] bytes = listener.Receive(ref groupEP); 
        Console.WriteLine("Received broadcast from {0} :\n {1}\n",groupEP.ToString(), Encoding.ASCII.GetString(bytes, 0, bytes.Length)); 
       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.ToString()); 
      } 
      finally 
      { 
       listener.Close(); 
      } 
     } 

     public static int Main() 
     { 
      StartListener(); 

      return 0; 
     } 
    } 

} 

とクライアント

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 
using System.IO; 
using System.Security.Cryptography; 

namespace UDP_Client 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Send("TEST STRING"); 
      Console.Read(); 
     } 
     static void Send(string Message) 
     { 
      Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
      IPAddress broadcast = IPAddress.Parse("10.1.10.117"); 
      byte[] sendbuf = Encoding.ASCII.GetBytes(Message); 
      IPEndPoint ep = new IPEndPoint(broadcast, 11000); 
      s.SendTo(sendbuf, ep); 
     } 
    } 
} 

答えて

8

ちょうどそれを他の方法でラウンドを行います。 クライアントStartListenerに電話し、サーバーのようなudpデータを受信できます。

サーバーでは、クライアントコードでデータを送信するだけです。

0

これは同じコードで、逆の役割をしています。クライアントは一部のポートでリッスンする必要があり、サーバーはブロードキャストアドレスの代わりにクライアントのエンドポイントにメッセージを送信します。

関連する問題