Exemplo n.º 1
0
        private void ServerRoutine(int ListenPort)
        {
            try
            {
                IPEndPoint listenIPEndPoint = new IPEndPoint(IPAddress.Any, ListenPort);
                Socket     listenSocket     = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                listenSocket.Bind(listenIPEndPoint);
                listenSocket.Listen(10);
                MessageBox.Show(String.Format("Start hosting accepting {0} IP,{1} port", listenIPEndPoint.Address, listenIPEndPoint.Port));
                while (true)
                {
                    Socket clientSocket = listenSocket.Accept();
                    try
                    {
                        Task.Run(() => ServeOneClient(clientSocket));
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        NetOps.SendReply(ex.Message, clientSocket);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 2
0
        private void BtnPull_Click(object sender, EventArgs e)
        {
            FileStream receivedFileStream = null;
            FileStream undoFile           = null;

            try
            {
                NetOps.SendAcknowledgement(NetOps.SignalPull, clientSocket);
                string pulledFileName = PulledFileName;
                NetOps.ReceiveFile(clientSocket, ref pulledFileName);
                //pulledFileName = new FileStream(pulledFileName, FileMode.Open);
                //undoFile = new FileStream(UndoFileName, FileMode.Create); //OpenOrCreate if pull dont delete client work
                //CopyStream(undoFile, receivedFileStream);
                ClearCanvasAndState(pulledFileName);
                //DrawAllFileFiguresAndRefreshCount(receivedFileStream, out undoFiguresCount);//может лучше рисовать все фигуры принитого файла и сериализовать их а не аппендить файл и рисовать полученнный?
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (receivedFileStream != null)
                {
                    receivedFileStream.Dispose();
                }
                if (undoFile != null)
                {
                    undoFile.Dispose();
                }
            }
        }
Exemplo n.º 3
0
 private void BtnDisconnect_Click(object sender, EventArgs e)
 {
     try
     {
         NetOps.SendAcknowledgement(NetOps.SignalDisconnect, clientSocket);
         clientSocket.Disconnect(true);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Exemplo n.º 4
0
 private void BtnCommit_Click(object sender, EventArgs e)
 {
     try
     {
         NetOps.SendAcknowledgement(NetOps.SignalCommit, clientSocket);
         NetOps.SendFile(UndoFileName, clientSocket);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Exemplo n.º 5
0
        private void ServeOneClient(Socket clientServeSocket)
        {
            bool isServeEnd   = false;
            int  clientSignal = NetOps.SignalDisconnect;

            byte[] buf = new byte[1024];

            IPEndPoint clientEP = (IPEndPoint)clientServeSocket.RemoteEndPoint;

            MessageBox.Show(String.Format("Connected with {0} at port {1}", clientEP.Address, clientEP.Port));
            while (!isServeEnd)
            {
                try
                {
                    clientSignal = NetOps.GetAcknowlegment(clientServeSocket);

                    switch (clientSignal)
                    {
                    case NetOps.SignalDisconnect:
                        isServeEnd = true;
                        MessageBox.Show(String.Format("Client ip {0} at port {1} disconnect", clientEP.Address, clientEP.Port));
                        clientServeSocket.Disconnect(false);
                        clientServeSocket.Dispose();
                        break;

                    case NetOps.SignalPull:
                        NetOps.SendFile(UndoFileName, clientServeSocket);
                        break;

                    case NetOps.SignalCommit:
                        string receivedFileName = ReceivedFileName;
                        NetOps.ReceiveFile(clientServeSocket, ref receivedFileName);
                        CommitFile(receivedFileName);
                        FileStream undoFile = new FileStream(UndoFileName, FileMode.OpenOrCreate);
                        DrawAllFileFiguresAndRefreshCount(undoFile, out undoFiguresCount);
                        undoFile.Dispose();
                        break;

                    default:
                        NetOps.SendAcknowledgement(NetOps.SignalError, clientServeSocket);
                        break;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    NetOps.SendAcknowledgement(NetOps.SignalError, clientServeSocket);
                    NetOps.SendReply(ex.Message, clientServeSocket);
                }
            }
        }