コード例 #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            IPEndPoint localEP = new IPEndPoint(System.Net.IPAddress.Any, 0);

            //
            // create the socket and bind to INADDR_ANY
            //
            m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            m_socket.Bind(localEP);
            localEP = (IPEndPoint)m_socket.LocalEndPoint;

            //
            // start asynchronous read
            //
            m_socket.BeginReceive(m_buffer, 0, BUFFER_SIZE, 0, new AsyncCallback(this.OnReadSocket), this);

            try
            {
                //
                // start the register and browse operations
                //
                m_registrar = m_service.Register(0, 0, System.Environment.UserName, "_p2pchat._udp", null, null, ( ushort )localEP.Port, null, m_eventManager);
            }
            catch
            {
                MessageBox.Show("Bonjour service is not available", "Error");
                Application.Exit();
            }
        }
コード例 #2
0
        public void PublishBonjour()
        {
            Logger.Instance.eventLog.WriteEntry("Starting Bonjour", EventLogEntryType.Information);
            try
            {
                bonjourService = new DNSSDService();
            }
            catch
            {
                return;
            }
            String type = "_istatserv._tcp";
            String name = String.Format("{0},{1}", Clients.Instance.ServerUUID(), Environment.MachineName);

            Bonjour.TXTRecord record = new TXTRecord();
            record.SetValue("model", "windows");
            record.SetValue("time", String.Format("{0}", DateTime.Now.Ticks));
            //manager.ServiceRegistered += new _IDNSSDEvents_ServiceRegisteredEventHandler(this.ServiceRegistered);
            Logger.Instance.eventLog.WriteEntry("Registering Bonjour Service", EventLogEntryType.Information);
            bonjourServiceRegistrar = bonjourService.Register(0, 0, name, type, null, null, ushort.Parse(Preferences.Instance.Value("port")), record, null);
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: kphannan/OpenLCB
        public OlcbSvr()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;
            try
            {
                m_service = new DNSSDService();
                m_eventManager = new DNSSDEventManager();
                m_eventManager.OperationFailed += new _IDNSSDEvents_OperationFailedEventHandler(OperationFailed);
             }
            catch
            {
                log("Bonjour Service is not available");
            }

            String[] arguments = Environment.GetCommandLineArgs();
            for (int a = 1; a < arguments.Length; a++)
            {
                localhub = true;
                log("Arg " + arguments[a]);
                if (arguments[a].StartsWith("port"))
                {
                    int p = arguments[a].IndexOf('=');
                    if (p > 0)
                        port = Convert.ToInt32(arguments[a].Substring(p+1));
                }
                if (arguments[a].StartsWith("max"))
                {
                    int p = arguments[a].IndexOf('=');
                    if (p > 0)
                        MAXCONNECTIONS = Convert.ToInt32(arguments[a].Substring(p+1));
                }
            }

            if (!localhub)
            {
                // create the async listening sockets
                ep = new IPEndPoint(IPAddress.Any, 0);
                ServerSkt.Bind(ep);
                ServerSkt.Listen(1);
                ServerSkt.BeginAccept(new AsyncCallback(Acceptcallback), 0);
                ep = ((IPEndPoint)ServerSkt.LocalEndPoint);
                log("OpenLCB Hub start on port " + ep.Port.ToString());
                // register server with zeroconfig, (alias bonjour)
                // params (flags, interface, instancename, servicetype, domain, host, port, TXTrecord, eventmanager)
                m_registrar = m_service.Register(DNSSDFlags.kDNSSDFlagsNoAutoRename, 0, "OpenLCB Hub Service",
                    "_OpenLCB._tcp", null, null, (ushort)ep.Port, null, m_eventManager);
            }
            if (localhub)
            {
                // connect via bonjour
                StartOpenLCBConnect();

                // create the async listening sockets
                ep = new IPEndPoint(IPAddress.Loopback, port);
                ServerSkt.Bind(ep);
                ServerSkt.Listen(1);
                ServerSkt.BeginAccept(new AsyncCallback(Acceptcallback), 0);
                ep = ((IPEndPoint)ServerSkt.LocalEndPoint);
                log("OpenLCB Hub start on port " + ep.Port.ToString());
            }

            if (!localhub)
                readxmldata();

            MaxConTB.Text = MAXCONNECTIONS.ToString();
            connects = new CONNECTION[MAXCONNECTIONS];
            for (int i = 0; i < MAXCONNECTIONS; i++)
                connects[i] = new CONNECTION();

            // node number server range
            GroupBox.Items.Add("NMRA");
            GroupBox.Items.Add("MERG");
            GroupBox.Items.Add("Fremo");
            GroupBox.Items.Add("Ntrak");
            RangeFromTB.Text = servernodenumber.ToString("X12");
            SetGroup(RangeFromTB.Text);
            byte6txt.Text = Convert.ToInt32(RangeFromTB.Text.Substring(10, 2), 16).ToString();
            membertxt.Text = Convert.ToInt32(RangeFromTB.Text.Substring(4, 6), 16).ToString();

            inithub();
        }
コード例 #4
0
        public void PublishBonjour()
        {
            Logger.Instance.eventLog.WriteEntry("Starting Bonjour", EventLogEntryType.Information);
            try
            {
                bonjourService = new DNSSDService();
            }
            catch
            {
                return;
            }
            String type = "_istatserv._tcp";
            String name = String.Format("{0},{1}", Clients.Instance.ServerUUID(), Environment.MachineName);

            Bonjour.TXTRecord record = new TXTRecord();
            record.SetValue("model", "windows");
            record.SetValue("time", String.Format("{0}", DateTime.Now.Ticks));
            //manager.ServiceRegistered += new _IDNSSDEvents_ServiceRegisteredEventHandler(this.ServiceRegistered);
            Logger.Instance.eventLog.WriteEntry("Registering Bonjour Service", EventLogEntryType.Information);
            bonjourServiceRegistrar = bonjourService.Register(0, 0, name, type, null, null, ushort.Parse(Preferences.Instance.Value("port")), record, null);
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: kphannan/OpenLCB
        public Server()
        {
            InitializeComponent();

            try
            {
                m_service = new DNSSDService();
                m_eventManager = new DNSSDEventManager();
            }
            catch
            {
                MessageBox.Show("Bonjour Service is not available", "Error");
                Application.Exit();
            }

            CheckForIllegalCrossThreadCalls = false;
            StartGetNodeNumber();

            // create the async listening sockets
            for (int i = 0; i < MAXCONNECTIONS; i++)
                connections[i] = new Connection();
            IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
            listenSocket.Bind(ep);
            listenSocket.Listen(100);
            listenSocket.BeginAccept(new AsyncCallback(Acceptcallback), 0);
            ep = ((IPEndPoint)listenSocket.LocalEndPoint);
            m_registrar = m_service.Register(0, 0, System.Environment.UserName, "_withrottle._tcp", null, null, (ushort)ep.Port, null, null);
            log("WiThrottle Port " + ep.Port.ToString());
        }