/// <summary> /// 3.启动服务 /// </summary> /// <param name="ipAdr"></param> /// <param name="port"></param> /// <param name="reuseAddr">重连选项,是否允许使用重复IP地址和端口,一般内部连接填true,游戏服务填false</param> public void bind(string ipAdr, int port, bool reuseAddr) { // this._serverIp = ipAdr; this._serverPort = port; // IPAddress ipAddress; //双网卡支持 if ("any" == ipAdr.ToLower()) { ipAddress = IPAddress.Any; } else { ipAddress = IPAddress.Parse(_serverIp); } //_tcpLis = new TcpListener(ipAddress, _serverPort); _tcpLis = new GameTcpListener(); if (_tcpLis.Setup(_serverPort)) { _tcpLis.NewSessionConnected += new SessionHandler <AppSession>(Event_NewSessionConnected); _tcpLis.NewRequestReceived += new RequestHandler <AppSession, StringRequestInfo>(Event_NewRequestReceived); _tcpLis.SessionClosed += new SessionHandler <AppSession, CloseReason>(Event_SessionClosed); } else { //setup failed Console.WriteLine(SR.GetString(SR.Game_tcp_listen_setup_failed)); throw new ArgumentException(SR.GetString(SR.Game_tcp_listen_setup_failed)); } //_tcpLis.Start(); //Socket svrSocket = _tcpLis.Server; //svrSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, reuseAddr); //Start //_tcpLis.Start(_maxOnlinePeople); if (_tcpLis.Start()) { } else { //start failed Console.WriteLine(SR.GetString(SR.Game_tcp_listen_start_failed)); throw new ArgumentException(SR.GetString(SR.Game_tcp_listen_start_failed)); } // Log.WriteStr2("------------------------------------------------------\n"); Log.WriteStr2("Listen IP:" + _serverIp + ":" + _serverPort + "...\n"); if ("127.0.0.1" == _serverIp) { //Log.WriteStr2("提示:你的服务ip未设为外网ip"); Log.WriteStr2( SR.GetString(SR.ip_is_not_internet) ); } if (System.DateTime.Now.Year <= 2012) { //Log.WriteStr2("提示:你的服务器当前时间为" + System.DateTime.Now.Year.ToString() + "年,是否正确?"); Log.WriteStr2( SR.GetString(SR.server_time_year_is_right, System.DateTime.Now.Year.ToString()) ); } if ("*" != _allowAccessFromDomain) { //Log.WriteStr2("提示:客户端只能从" + _allowAccessFromDomain + "的域名进行访问"); } Log.WriteStr2("------------------------------------------------------\n"); }
/// <summary> /// 3.启动服务 /// </summary> /// <param name="ipAdr"></param> /// <param name="port"></param> /// <param name="reuseAddr">重连选项,是否允许使用重复IP地址和端口,一般内部连接填true,游戏服务填false</param> public void bind(string ipAdr, int port, bool reuseAddr) { // this._serverIp = ipAdr; this._serverPort = port; // IPAddress ipAddress; //双网卡支持 if ("any" == ipAdr.ToLower()) { ipAddress = IPAddress.Any; } else { ipAddress = IPAddress.Parse(_serverIp); } //_tcpLis = new TcpListener(ipAddress, _serverPort); _tcpLis = new GameTcpListener(); if (_tcpLis.Setup(_serverPort)) { _tcpLis.NewSessionConnected += new SessionHandler<AppSession>(Event_NewSessionConnected); _tcpLis.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(Event_NewRequestReceived); _tcpLis.SessionClosed += new SessionHandler<AppSession, CloseReason>(Event_SessionClosed); } else { //setup failed Console.WriteLine(SR.GetString(SR.Game_tcp_listen_setup_failed)); throw new ArgumentException(SR.GetString(SR.Game_tcp_listen_setup_failed)); } //_tcpLis.Start(); //Socket svrSocket = _tcpLis.Server; //svrSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, reuseAddr); //Start //_tcpLis.Start(_maxOnlinePeople); if (_tcpLis.Start()) { } else { //start failed Console.WriteLine(SR.GetString(SR.Game_tcp_listen_start_failed)); throw new ArgumentException(SR.GetString(SR.Game_tcp_listen_start_failed)); } // Log.WriteStr2("------------------------------------------------------\n"); Log.WriteStr2("Listen IP:" + _serverIp + ":" + _serverPort + "...\n"); if ("127.0.0.1" == _serverIp) { //Log.WriteStr2("提示:你的服务ip未设为外网ip"); Log.WriteStr2( SR.GetString(SR.ip_is_not_internet) ); } if (System.DateTime.Now.Year <= 2012) { //Log.WriteStr2("提示:你的服务器当前时间为" + System.DateTime.Now.Year.ToString() + "年,是否正确?"); Log.WriteStr2( SR.GetString(SR.server_time_year_is_right,System.DateTime.Now.Year.ToString()) ); } if ("*" != _allowAccessFromDomain) { //Log.WriteStr2("提示:客户端只能从" + _allowAccessFromDomain + "的域名进行访问"); } Log.WriteStr2("------------------------------------------------------\n"); }