Simple UDP example to send and receive data from same socket

前端 未结 3 522
太阳男子
太阳男子 2020-12-12 22:10

For some reason I am having a hard time sending and receiving data from the same socket. Anyways here is my client code:

var client = new UdpClient();
IPEndP         


        
3条回答
  •  天涯浪人
    2020-12-12 22:33

    here is my soln to define the remote and local port and then write out to a file the received data, put this all in a class of your choice with the correct imports

        static UdpClient sendClient = new UdpClient();
        static int localPort = 49999;
        static int remotePort = 49000;
        static IPEndPoint localEP = new IPEndPoint(IPAddress.Any, localPort);
        static IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), remotePort);
        static string logPath = System.AppDomain.CurrentDomain.BaseDirectory + "/recvd.txt";
        static System.IO.StreamWriter fw = new System.IO.StreamWriter(logPath, true);
    
    
        private static void initStuff()
        {
          
            fw.AutoFlush = true;
            sendClient.ExclusiveAddressUse = false;
            sendClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            sendClient.Client.Bind(localEP);
            sendClient.BeginReceive(DataReceived, sendClient);
        }
    
        private static void DataReceived(IAsyncResult ar)
        {
            UdpClient c = (UdpClient)ar.AsyncState;
            IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
            Byte[] receivedBytes = c.EndReceive(ar, ref receivedIpEndPoint);
            fw.WriteLine(DateTime.Now.ToString("HH:mm:ss.ff tt") +  " (" + receivedBytes.Length + " bytes)");
    
            c.BeginReceive(DataReceived, ar.AsyncState);
        }
    
    
        static void Main(string[] args)
        {
            initStuff();
            byte[] emptyByte = {};
            sendClient.Send(emptyByte, emptyByte.Length, remoteEP);
        }
    

提交回复
热议问题