コード例 #1
0
    public void PrepareClient(int localPort)
    {
        if (serverStatus == csUdpConnStatus.Opened)
        {
            return;
        }

        try
        {
            // server 객체 얻기
            clientForServer = new UdpClient(localPort);
            // set End Point
            broadcastEP = new IPEndPoint(IPAddress.Any, localPort);

            threadRcv = new Thread(ReceiveThreadMain);
            threadRcv.Start();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
            serverStatus = csUdpConnStatus.Closed;
        }

        serverStatus = csUdpConnStatus.Opened;
    }
コード例 #2
0
    //===============================================================
    //  Receive Thread Main
    //===============================================================
    private void ReceiveThreadMain()
    {
        try
        {
            byte[] bytebuff;
            while (true)
            {
                Thread.Sleep(1);

                bytebuff = clientForServer.Receive(ref broadcastEP);

                lock (RcvByteList)
                {
                    RcvByteList.AddRange(bytebuff);
                }

                // 데이터 수신 callback 함수 호출
                if (DataArrivalCallback != null)
                {
                    DataArrivalCallback();
                }
            }
        }
        catch (Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
        finally
        {
            clientForServer.Close();
            serverStatus = csUdpConnStatus.Closed;
        }
    }
コード例 #3
0
 private void tmrConnCheck_Tick(object sender, EventArgs e)
 {
     if (rB_tcp.Checked)
     {
         if (tServer == null)
         {
             lblStat.Text = "Conn: NULL";
         }
         else
         {
             csConnStatus conn = tServer.ServerStatus();
             lblStat.Text = "Conn: " + conn.ToString();
         }
     }
     else if (rB_udp.Checked)
     {
         if (uServer == null)
         {
             lblStat.Text = "Conn: NULL";
         }
         else
         {
             csUdpConnStatus conn = uServer.ServerStatus();
             lblStat.Text = "Conn: " + conn.ToString();
         }
     }
 }
コード例 #4
0
    //===============================================================
    //  Server : Close
    //===============================================================
    public void ServerClose()
    {
        if (clientForServer != null)
        {
            clientForServer.Close();
        }

        // 순서 바뀌면 안됨
        if (threadRcv != null && threadRcv.IsAlive)
        {
            threadRcv.Abort();
            threadRcv.Join();
        }

        if (threadChkDeath != null && threadChkDeath.IsAlive)
        {
            threadChkDeath.Abort();
            threadChkDeath.Join();
        }

        serverStatus = csUdpConnStatus.Closed;
    }
コード例 #5
0
    //===============================================================
    //  Server : Start
    //===============================================================
    public void openUdpServer(int serverPort)
    {
        if (serverStatus == csUdpConnStatus.Opened)
        {
            return;
        }

        // 1단계 : Start
        try
        {
            // server 객체 얻기
            clientForServer = new UdpClient(serverPort);
            // server측 접속 IP 객체 얻기
            broadcastEP = new IPEndPoint(IPAddress.Any, serverPort);
        }
        catch (SocketException e)
        {
            Console.WriteLine(e);
            return;
        }

        serverStatus = csUdpConnStatus.Opened;
    }