예제 #1
0
 private void DealWithFeedBack(ReadWriteObject rwObj, int count)
 {
     byte[] b = new byte[count];
     Array.Copy(rwObj.ReadBytes, 0, b, 0, count);
     SendData(b);
     OnReceiveMessage?.Invoke(Message.Parser.ParseFrom(b));
 }
예제 #2
0
        private void AcceptTcpClientCallback(IAsyncResult ar)
        {
            TcpListener myListener = ar.AsyncState as TcpListener;
            TcpClient   client     = myListener.EndAcceptTcpClient(ar);

            OnReceiveMessage?.Invoke(new Message()
            {
                Name = "Server", Content = $"Connected {client.Client.RemoteEndPoint.ToString()}"
            });
            ReadWriteObject readWriteObject = new ReadWriteObject(client);

            rwoList.Add(readWriteObject);
            readWriteObject.BeginRead(ReadCallback);
            AcceptConnect();
        }
예제 #3
0
 public IVideoConfigurationDTO ReadVideo()
 {
     return(ReadWriteObject.ReadVideo(_fileDir));
 }
예제 #4
0
 public ITcpConfigurationDTO ReadTcp()
 {
     return(ReadWriteObject.ReadTcp(_fileDir));
 }
예제 #5
0
 public void Save(IVideoConfigurationDTO videoDTO)
 {
     ReadWriteObject.Save(_fileDir, videoDTO);
 }
예제 #6
0
 public void Save(ITcpConfigurationDTO tcpDTO)
 {
     ReadWriteObject.Save(_fileDir, tcpDTO);
 }
예제 #7
0
        private void SendCallback(IAsyncResult ar)
        {
            ReadWriteObject readWriteObject = ar.AsyncState as ReadWriteObject;

            readWriteObject?.EndWrite(ar);
        }
예제 #8
0
        private void ReadCallback(IAsyncResult ar)
        {
            ReadWriteObject readWriteObject = null;

            try
            {
                readWriteObject = ar.AsyncState as ReadWriteObject;
                int count = readWriteObject.EndRead(ar);

                if (count == 0)
                {
                    readWriteObject.Close();
                    readWriteObject = null;
                    return;
                }

                if (readWriteObject != null)
                {
                    if (count > 0)
                    {
                        DealWithFeedBack(readWriteObject, count);
                    }
                }
            }
            catch (Exception e)
            {
                if (readWriteObject != null)
                {
                    OnReceiveMessage?.Invoke(new Message()
                    {
                        Name = "ServerError", Content = $"{readWriteObject.RemoteEndPoint}已离线"
                    });
                    rwoList.Remove(readWriteObject);
                    readWriteObject.Close();
                    readWriteObject = null;
                }
                else
                {
                    OnReceiveMessage?.Invoke(new Message()
                    {
                        Name = "ServerError", Content = e.Message
                    });
                }
            }

            if (readWriteObject != null)
            {
                try
                {
                    readWriteObject.BeginRead(ReadCallback);
                }
                catch (Exception e)
                {
                    OnReceiveMessage?.Invoke(new Message()
                    {
                        Name = "ServerError", Content = $"{readWriteObject.RemoteEndPoint}已离线"
                    });
                    if (readWriteObject != null)
                    {
                        rwoList.Remove(readWriteObject);
                        readWriteObject.Close();
                        readWriteObject = null;
                    }
                }
            }
        }