UDP客户端/服务器

时间:2015-09-29 07:15:00

标签: c# multithreading sockets

我试图让UDP客户端/服务器运行,但我在服务器端遇到问题。当第一个客户端请求服务器而不是服务器给出正确的响应但之后它不响应其他请求,如第二个客户端或另一个请求,我想异步创建它作为多客户端请求响应以及如何使用线程实现,因为我在线程新概念。我是我的代码。任何人都可以帮助弄清楚这一点 - 提前谢谢。

    static void Main(string[] args)
    {
        Console.WriteLine("                              COMNODE SERVER (C) 2015                        ");
        Console.WriteLine("                                " + DateTime.Now + "                        ");
        int localPort = 1100;
        IPEndPoint remoteSender = new IPEndPoint(IPAddress.Any, 0);
        //IPEndPoint remoteSender = new IPEndPoint(IPAddress.Parse("192.168.11.254"), 3073);
        bool flag = false;            
        if (flag)
            return;         
        UdpClient client = new UdpClient(localPort);
        UdpState state = new UdpState(client, remoteSender);
        while (true)
        {
            var reult = client.BeginReceive(new AsyncCallback(DataReceived), state);
            var dat = client.EndReceive(reult, ref remoteSender);
            client.Connect(remoteSender);
            byteParser bp = new byteParser(dat);
            Console.WriteLine(bp.ToHex() + " from out of method");
            Console.WriteLine("Received From Machine");
            Thread.Sleep(500);
            ProtocolDistributor pd = new ProtocolDistributor(64);
            byte[] finalbyte = pd.ChackCardTapping(bp.ToHex());
            for (int i = 0; i < finalbyte.Length; i++)
            {
                byte[] temp = new byte[1];
                temp[0] = finalbyte[i];
                client.Send(temp, temp.Length);
                Thread.Sleep(10);
                Array.Clear(temp, 0, 0);
            }
            byteParser mp = new byteParser(finalbyte);
            Console.WriteLine("Finally Send " + mp.ToHex() + " bit " + finalbyte.Length);
            Console.WriteLine("Send To Machine");
            Array.Clear(finalbyte, 0, finalbyte.Length);
            //Console.ReadKey(); 
            //}
        }
        //client.Close();
    }


    private static void DataReceived(IAsyncResult ar)
    {

        UdpClient c = (UdpClient)((UdpState)ar.AsyncState).c;
        IPEndPoint wantedIpEndPoint = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
        IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
        return;

    }

0 个答案:

没有答案
相关问题