Exemplo n.º 1
0
        void InitRemoting()//初始化remoting
        {
            try
            {
                BinaryServerFormatterSinkProvider sinkProvider = new BinaryServerFormatterSinkProvider();
                ClientIPServerSinkProvider        IPProvider   = new ClientIPServerSinkProvider();//创建SINK
                IPProvider.Next = sinkProvider;

                Remotingserver = new TcpServerChannel(DateTime.Now.ToString(), int.Parse(ConfigurationManager.AppSettings["RMPORT"].ToString()), IPProvider);
                ChannelServices.RegisterChannel(Remotingserver, false);
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteService), "RemoteService", WellKnownObjectMode.SingleCall);
                Remotingserver.StartListening(null);

                AddListStatus("Remoting->服务已启动......");

                AddListStatus("Remoting->服务IP: " + Dns.GetHostAddresses(Dns.GetHostName())[0].ToString()
                              + " ,端口:" + ConfigurationManager.AppSettings["RMPORT"].ToString() + ",服务启动成功! ");
                listBox_Status.Items.Add("");

                DB_CaChe.OnCallEvent   += new DB_CaChe.CallEvevt(DB_CaChe_OnCallEvent);
                DB_CaChe.OnRefrshCaChe += new DB_CaChe.RefrshCaChe(DB_CaChe_OnRefrshCaChe);
            }
            catch (Exception ex)
            {
                if (ex.Message.IndexOf("端口") != 0)
                {
                    MessageBox.Show("客户端连接了端口,无法释放!程序将自动重新启动!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.Restart();
                }
            }
        }
Exemplo n.º 2
0
        private void Receiver(object state)
        {
            var pipeline = new Pipeline();

            pipeline.Push(new NboFrameLengthSink(2)
            {
                IncludeHeaderLength = false, MaxFrameLength = 1024
            });
            pipeline.Push(
                new MessageFormatterSink(new Iso8583MessageFormatter((@"..\Formatters\Iso8583Bin1987.xml"))));
            var ts = new TupleSpace <ReceiveDescriptor>();

            var server = new TcpServerChannel(new Pipeline(), new ClonePipelineFactory(pipeline), ts,
                                              new FieldsMessagesIdentifier(new[] { 11, 41 }))
            {
                Port           = 8583,
                LocalInterface = (string)state,
                Name           = "ISO8583Server"
            };

            server.StartListening();

            while (!_stop)
            {
                ReceiveDescriptor rcvDesc = ts.Take(null, 100);
                if (rcvDesc == null)
                {
                    continue;
                }
                _requestsCnt++;
                var message = rcvDesc.ReceivedMessage as Iso8583Message;
                if (message == null)
                {
                    continue;
                }

                Iso8583Message response;
                if (message.IsAuthorization())
                {
                    Console.WriteLine("go to handle sale msg");
                    Sale auth = new Sale(message);
                    response = auth.GetMessage();
                }
                else if (message.IsNetworkManagement())
                {
                    Console.WriteLine("go to handle logon msg");
                    Logon logon = new Logon(message);
                    logon.BuildResponse();
                    response = logon.GetMessage();
                    Console.WriteLine(response.ToString());
                }
                else
                {
                    response = null;
                }

                //message.SetResponseMessageTypeIdentifier();
                //message.Fields.Add(Field39ResponseCode, "00");
                var addr = rcvDesc.ChannelAddress as ReferenceChannelAddress;
                if (addr == null)
                {
                    continue;
                }
                var child = addr.Channel as ISenderChannel;
                if (child != null)
                {
                    child.Send(response);
                }
            }

            // Stop listening and shutdown the connection with the sender.
            server.StopListening();
        }