Пример #1
0
        /// <summary>
        /// 关闭一个与客户端之间的会话
        /// </summary>
        /// <param name="state">需要关闭的客户端会话对象</param>
        public void Close(AsyncSocketState state)
        {
            //if (state != null && state.ClientSocket.Connected == false)
            if(state != null)
            {
                state.Datagram = null;
                state.RecvDataBuffer = null;

                this.m_clientList.Remove(state);
                this.m_currClientCount--;

                IPEndPoint ip = (IPEndPoint)state.ClientIp;
                Console.WriteLine("客户端终止,关闭了客户端{0}:{1}, 当前连接的客户端数目{2}", ip.Address, ip.Port, this.m_currClientCount);
                this.Log.Write(new LogMessage("客户端终止,关闭了客户端, 当前连接的客户端数目" + this.m_currClientCount, LogMessageType.Error));
                //TODO 触发关闭事件
                state.Close();
                //state = null;
            }
        }
Пример #2
0
        private void RaiseUploadSigaturePicture(AsyncSocketState state)
        {
            Console.WriteLine("接收到来自" + state.ClientIp + "上传签字图片的请求" + state.SocketMessage.Message);
            this.Log.Write(new LogMessage("接收到来自" + state.ClientIp + "上传签字图片的请求" + state.SocketMessage.Message, LogMessageType.Information));

            String employeeId = JsonConvert.DeserializeObject<String>(state.SocketMessage.Message);

            //ServerResponse response = new ServerResponse();
            Console.WriteLine("开始上传签字图片");

            //因为终端每次发送文件的最大缓冲区是512字节,所以每次接收也是定义为512字节
            byte[] buffer = new byte[512];
            int size = 0;
            long len = 0;

            string fileName = SIGNATURE_PICTURE_PATH + employeeId + ".jpg";//获得用户保存文件的路径
            try
            {
                //创建文件流,然后让文件流来根据路径创建一个文件
                FileStream fs = new FileStream(fileName, FileMode.Create);

                //从终端不停的接受数据,然后写入文件里面,只到接受到的数据为0为止,则中断连接
                while ((size = state.ClientSocket.Receive(buffer, 0, buffer.Length, SocketFlags.None)) > 0)
                {
                    // Console.WriteLine(Encoding.UTF8.GetString(buffer));
                    fs.Write(buffer, 0, size);
                    len += size;
                }

                fs.Flush();
                Console.WriteLine("上传签字图片成功");

            }
            catch(Exception ex)
            {
                state.Close();
                Console.WriteLine(ex.ToString());
            }
        }