public Socket(SocketParam sParameter) { this._LocalIP = sParameter.LocalIP; this._RemoteIP = sParameter.RemoteIP; this._WorkingPort = sParameter.Port; this._WorkingMode = sParameter.SocketMode; }
protected ZMQReceivingChannelBase(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode) : base(channelManager, bindingContext, socket, socketMode) { _onReceiveHandler = Receive; _onTryReceiveHandler = TryReceive; _onWaitForMessageHandler = WaitForMessage; _context = context; }
private void ProcessArguments() { string[] args = System.Environment.GetCommandLineArgs(); for (int i = 0; i < args.Length; i++) { switch (args[i].ToLower()) { case "+debug": debug = true; break; case "+server.hostname": serverName = args[i + 1]; break; case "+server.gameport": gamePort = Convert.ToUInt16(args[i + 1]); break; case "+server.queryport": queryPort = Convert.ToUInt16(args[i + 1]); break; case "+server.steamport": steamPort = Convert.ToUInt16(args [i + 1]); break; case "+server.socketmode": switch (args[i + 1].ToUpper()) { case "UDP": socketMode = SocketMode.UDP; break; case "P2P": socketMode = SocketMode.P2P; break; // SDR - Will be added when Facepunch.Steamworks has support for it /* * case "SDR": * socketMode = SocketMode.SDR; * break; */ } break; } } }
protected ZMQChannelBase(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode) : base(channelManager) { MessageEncodingBindingElement encoderElem = context.BindingParameters.Find <MessageEncodingBindingElement>(); _encoder = encoderElem.CreateMessageEncoderFactory().Encoder; _context = context; _socket = socket; _socketMode = socketMode; _onSendHandler = Send; _bufferManager = context.BindingParameters.Find <BufferManager>(); }
protected ZMQChannelBase(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode) : base(channelManager) { MessageEncodingBindingElement encoderElem = context.BindingParameters.Find<MessageEncodingBindingElement>(); _encoder = encoderElem.CreateMessageEncoderFactory().Encoder; _context = context; _socket = socket; _socketMode = socketMode; _onSendHandler = Send; _bufferManager = context.BindingParameters.Find<BufferManager>(); }
private TestServer CreateServer(IReceiveFilterFactory<StringPackageInfo> receiveFilterFactory, SocketMode mode) { var appServer = new TestServer(); var serverConfig = new ServerConfig(); serverConfig.Ip = "127.0.0.1"; serverConfig.Port = 2012; serverConfig.Mode = mode; serverConfig.MaxRequestLength = 40960; serverConfig.DisableSessionSnapshot = true; var setupResult = appServer.Setup(serverConfig, receiveFilterFactory, new ConsoleLoggerFactory(), null, null); Assert.IsTrue(setupResult); Assert.IsTrue(appServer.Start()); return appServer; }
public ZMQChannelListener(BindingContext bindingContext, SocketMode socketMode) { _bindingContext = bindingContext; _socketMode = socketMode; if (bindingContext.ListenUriMode == ListenUriMode.Explicit && bindingContext.ListenUriBaseAddress != null) { _address = new EndpointAddress(new Uri(bindingContext.ListenUriBaseAddress, bindingContext.ListenUriRelativeAddress)); } else { _address = new EndpointAddress(string.Format("{0}://127.0.0.1:{1}", bindingContext.Binding.Scheme, 2020)); } _onCloseHandler = OnClose; _onOpenHandler = OnOpen; _onWaitForChannelHandler = OnWaitForChannel; }
public SocketAttribute(string ip = DefaultIp, int port = DefaultPort, SocketMode mode = DefaultMode, string security = DefaultSecurity, bool clearIdleSession = true, int clearIdleSessionInterval = DefaultClearIdleSessionInterval, int idleSessionTimeOut = DefaultIdleSessionTimeOut, int keepAliveInterval = DefaultKeepAliveInterval, int keepAliveTime = DefaultKeepAliveTime, int maxConnectionNumber = DefaultMaxConnectionNumber, int maxRequestLength = DefaultMaxRequestLength, int receiveBufferSize = DefaultReceiveBufferSize, int sendBufferSize = DefaultSendBufferSize, int sendingQueueSize = DefaultSendingQueueSize, int sendTimeOut = DefaultSendTimeout, int sessionSnapshotInterval = DefaultSessionSnapshotInterval, string description = DefaultDescription) { this.Ip = ip; this.Port = port; this.Mode = mode; this.Security = security; this.ClearIdleSession = clearIdleSession; this.ClearIdleSessionInterval = clearIdleSessionInterval; this.IdleSessionTimeOut = idleSessionTimeOut; this.KeepAliveInterval = keepAliveInterval; this.KeepAliveTime = keepAliveTime; this.MaxConnectionNumber = maxConnectionNumber; this.MaxRequestLength = maxRequestLength; this.ReceiveBufferSize = receiveBufferSize; this.SendBufferSize = sendBufferSize; this.SendingQueueSize = sendingQueueSize; this.SendTimeOut = sendTimeOut; this.SessionSnapshotInterval = sessionSnapshotInterval; this.Description = description; }
static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en"); try { LogService = new Log(); PrintService = new Print(LogService); LogService.Write(""); PrintService.Log("App Start", Print.EMode.info); PrintService.Write("Mode (tcp / udp): ", Print.EMode.question); SocketMode mode = Console.ReadLine() == "tcp" ? SocketMode.Tcp : SocketMode.Udp; PrintService.Write("Server Ip: ", Print.EMode.question); IPAddress ip = IPAddress.Parse(Console.ReadLine()); PrintService.Write("Server Port: ", Print.EMode.question); int port = Convert.ToInt32(Console.ReadLine()); StartClient(ip, port, mode); } catch (Exception ex) { ex = ExceptionHelper.GetReal(ex); PrintService.Log($"App Error, {ex.Message}", Print.EMode.error); } finally { PrintService.Log("App End", Print.EMode.info); Console.ReadKey(); Environment.Exit(0); } }
private bool SetupSocketServer(SocketMode mode) { try { switch (mode) { case (SocketMode.Tcp): m_SocketServer = new AsyncTcpServer(this, Listeners); m_SocketServer.WithLogger(this.Logger); break; //case (SocketMode.Udp): // return new UdpSocketServer<TRequestInfo>(appServer, listeners); default: throw new NotSupportedException("Unsupported SocketMode:" + mode); } return(m_SocketServer != null); } catch (Exception e) { Logger.Error(e); return(false); } }
/// <summary> /// Constructor /// </summary> /// <param name="oIpAddress">Specify ip address</param> /// <param name="oPortNumber">Specify port number</param> /// <param name="oMode">Specify mode TCP or UDP</param> /// <param name="oCommandSize"> /// Specify command size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or /// character /// </param> /// <param name="oBodySize"> /// Specify body size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or character /// Minimum is 1 maximum is 255 /// </param> /// <param name="oEncodingAndDecoding"> /// Specify type of encoding and decoding /// If set null adjusted default value => UTF-8 /// </param> #region G9SuperSocketConfig public AG9BaseConfig(IPAddress oIpAddress, ushort oPortNumber, SocketMode oMode, byte oCommandSize = 1, byte oBodySize = 8, G9Encoding oEncodingAndDecoding = null) { // Set ip address IpAddress = oIpAddress is null || Equals(oIpAddress, IPAddress.None) ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oIpAddress)), nameof(oIpAddress)) : oIpAddress; // Set port number PortNumber = oPortNumber < 1 ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oPortNumber)), nameof(oPortNumber)) : oPortNumber; // Set socket mode Mode = oMode; // Set command size CommandSize = oCommandSize < 1 ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oCommandSize)), nameof(oCommandSize)) : oCommandSize; // Set body size BodySize = oBodySize < 1 && oBodySize > 255 ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oBodySize)), nameof(oBodySize)) : oBodySize; // Set encoding EncodingAndDecoding = oEncodingAndDecoding ?? new G9Encoding(EncodingTypes.UTF_8); }
public ZMQTransportBindingElement(string scheme, SocketMode socketMode) { _scheme = scheme; _socketMode = socketMode; }
private TestServer CreateServer(IReceiveFilterFactory <StringPackageInfo> receiveFilterFactory, SocketMode mode) { var appServer = new TestServer(); var serverConfig = new ServerConfig(); serverConfig.Ip = "127.0.0.1"; serverConfig.Port = 2012; serverConfig.Mode = mode; serverConfig.MaxRequestLength = 40960; serverConfig.DisableSessionSnapshot = true; var setupResult = appServer.Setup(serverConfig, receiveFilterFactory, new ConsoleLogFactory(), null, null); Assert.IsTrue(setupResult); Assert.IsTrue(appServer.Start()); return(appServer); }
protected ZMQBinding(string name, SocketMode socketMode) { Name = name; SocketMode = socketMode; }
/// <summary> /// Constructor /// </summary> /// <param name="oIpAddress">Specify ip address</param> /// <param name="oPortNumber">Specify port number</param> /// <param name="oMode">Specify mode TCP or UDP</param> /// <param name="oCommandSize"> /// Specify command size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or /// character /// </param> /// <param name="oBodySize"> /// Specify body size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or /// character /// </param> /// <param name="oEncodingAndDecoding"> /// Specify type of encoding and decoding /// If set null adjusted default value => UTF-8 /// </param> public G9ClientConfig(IPAddress oIpAddress, ushort oPortNumber, SocketMode oMode, byte oCommandSize = 1, byte oBodySize = 8, G9Encoding oEncodingAndDecoding = null) : base(oIpAddress, oPortNumber, oMode, oCommandSize, oBodySize, oEncodingAndDecoding) { }
public ConvenientSocket(string sIp, ushort sPort, SocketMode sMode) { this._LocalIP = sIp; this._WorkingPort = sPort; }
public ZMQReplyChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, EndpointAddress address, SocketMode socketMode) : base(channelManager, bindingContext, context, socket, socketMode) { _address = address; }
protected ZMQDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via) : base(channelManager, bindingContext, context, socket, socketMode) { _via = via; _address = address; }
public ZMQInputChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, EndpointAddress address, SocketMode socketMode) : base(channelManager, bindingContext, context, socket, socketMode) { _address = address; }
public ZMQServerDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via) : base(channelManager, bindingContext, context, socket, socketMode, address, via) { }
/// <summary> /// Base constructor to all socket classes. /// </summary> /// <param name="config">Configurations for this socket.</param> /// <param name="mode">Mode of that this socket is running in.</param> protected SessionHandler(TConfig config, SocketMode mode) { TimeoutTimer = new Timer(TimeoutCallback); Mode = mode; Config = config; }
public ZMQOutputChannel(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode, EndpointAddress remoteAddress, Uri via) : base(channelManager, context, socket, socketMode) { _via = via; _remoteAddress = remoteAddress; }
public ZMQRequestChannel(ChannelManagerBase channelManager, BindingContext context, Socket socket, EndpointAddress address, Uri via, SocketMode socketMode) : base(channelManager, context, socket, socketMode) { _via = via; _address = address; }
public ZMQClientDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via) : base(channelManager, bindingContext, context, socket, socketMode, address, via) { }
public ZMQChannelFactory(BindingContext bindingContext, SocketMode socketMode) { _bindingContext = bindingContext; _socketMode = socketMode; }
private static void StartClient(IPAddress ip, int port, SocketMode mode) { try { IPEndPoint iPEnd = new IPEndPoint(ip, port); SocketType socketType = mode == SocketMode.Tcp ? SocketType.Stream : SocketType.Dgram; ProtocolType protocolType = mode == SocketMode.Tcp ? ProtocolType.Tcp : ProtocolType.Udp; using (Socket client = new Socket(iPEnd.AddressFamily, socketType, protocolType)) { client.Connect(iPEnd); EndPoint remote = client.RemoteEndPoint; if (client.Connected) { PrintService.Log($"Server<{remote}> is connecting", Print.EMode.success); } using (CancellationTokenSource tokenSource = new CancellationTokenSource()) { CancellationToken token = tokenSource.Token; Task.Run(() => { try { while (client.Connected && !token.IsCancellationRequested) { string message = Console.ReadLine(); if (message == "") { continue; } PrintService.Log($"Client: {message}", Print.EMode.message); byte[] byteData = Encoding.ASCII.GetBytes($"{message}\r\n"); client.Send(byteData); } } catch (Exception) { tokenSource.Cancel(); } }, token); try { while (client.Connected && !token.IsCancellationRequested) { byte[] bytes = new byte[1024]; int bytesRec = client.Receive(bytes); string message = Encoding.ASCII.GetString(bytes, 0, bytesRec); message = message.Replace("\n", "").Replace("\r", ""); if (!string.IsNullOrEmpty(message)) { PrintService.Log($"Server: {message}", Print.EMode.message); } } tokenSource.Cancel(); client.Shutdown(SocketShutdown.Both); client.Close(); } catch (Exception) { tokenSource.Cancel(); } finally { PrintService.Log($"Server<{remote}> was disconnected", Print.EMode.warning); } } } } catch (Exception) { throw; } }
private static void StartClient(IPAddress ip, int port, SocketMode mode) { try { IPEndPoint iPEnd = new IPEndPoint(ip, port); SocketType socketType = mode == SocketMode.Tcp ? SocketType.Stream : SocketType.Dgram; ProtocolType protocolType = mode == SocketMode.Tcp ? ProtocolType.Tcp : ProtocolType.Udp; using (Socket server = new Socket(AddressFamily.InterNetwork, socketType, protocolType)) { server.Bind(iPEnd); if (mode == SocketMode.Tcp) { server.Listen(100); List <Socket> clients = new List <Socket>(); Task.Run(() => { while (true) { string message = Console.ReadLine(); if (message == "") { continue; } PrintService.Log($"Server: {message}", Print.EMode.message); foreach (var client in clients) { byte[] byteData = Encoding.ASCII.GetBytes($"{message}\r\n"); client.Send(byteData); } } }); while (true) { Socket client = server.Accept(); EndPoint remote = client.RemoteEndPoint; PrintService.Log($"Client<{remote}> is connecting", Print.EMode.success); clients.Add(client); Task.Run(() => { try { while (IsSocketConnected(client)) { byte[] bytes = new byte[1024]; int bytesRec = client.Receive(bytes); string message = Encoding.ASCII.GetString(bytes, 0, bytesRec); message = message.Replace("\n", "").Replace("\r", ""); if (!string.IsNullOrEmpty(message)) { PrintService.Log($"Client<{remote}>: {message}", Print.EMode.message); } } client.Shutdown(SocketShutdown.Both); client.Close(); } catch (Exception) { } finally { clients = clients.Where((n) => n.Handle != client.Handle).ToList(); PrintService.Log($"Client<{remote}> was disconnected", Print.EMode.warning); } }); } } else { while (true) { EndPoint remote = new IPEndPoint(ip, port); byte[] bytes = new byte[1024]; int bytesRec = server.ReceiveFrom(bytes, ref remote); string message = Encoding.ASCII.GetString(bytes, 0, bytesRec); message = message.Replace("\n", "").Replace("\r", ""); if (!string.IsNullOrEmpty(message)) { PrintService.Log($"Client<{remote}>: {message}", Print.EMode.message); } } } } } catch (Exception) { throw; } }