/// <summary> /// Create an instance of TcpModelClient /// </summary> /// <param name="autoReconnect">True if the client can reconnect to server when disconnected automatically; otherwise, false.</param> /// <param name="modelHeaderIndicator">A 32-bits integer as the header to indicate the transmitted message is in the type of model.</param> /// <param name="packetSpliter">The spliter which is used to split stream data into packets.</param> public TcpModelClient(bool autoReconnect, int modelHeaderIndicator, IPacketSpliter packetSpliter) : base(autoReconnect, packetSpliter) { _modelHeaderIndicator = modelHeaderIndicator; _reqResponseAgent = new RequestResponseAgent(new RelayRequestMessageSender( () => RequestTimeOut, (clientID, model) => SendModelMessage(model))); }
public TcpBasicServerViewModel() { //1.the default spliter //IPacketSpliter spliter = new SimplePacketSpliter(); //2.packet with specific header which can prevent illegal network connection IPacketSpliter headerSpliter = new HeaderPacketSpliter(0xFFFF1111); //3.packet with length ahead in network byte order IPacketSpliter simpleSpliter = new SimplePacketSpliter(true); //4.packet end with specific mark IPacketSpliter endMarkSpliter = new EndMarkPacketSpliter(false, (byte)'\x04'); //5.packet that do not need to be split IPacketSpliter rawSpliter = RawPacketSpliter.Default; //6.custom packet spliter IPacketSpliter customSpliter = new CustomPacketSpliter(); //_tcpServer = new TcpServer(); _tcpServer = new TcpServer(simpleSpliter); _tcpServer.ClientStatusChanged += OnTcpServer_ClientStatusChanged; _tcpServer.MessageReceived += OnTcpServer_MessageReceived; ServerSendText = "I am server"; }
/// <summary> /// Create an instance of TcpModelServer /// </summary> /// <param name="modelHeaderIndicator">A 32-bits integer as the header to indicate the transmitted message is in the type of model.</param> /// <param name="packetSpliter">The spliter used to split stream data into complete packets.</param> public TcpModelServer(int modelHeaderIndicator, IPacketSpliter packetSpliter) : base(packetSpliter) { _modelHeaderIndicator = modelHeaderIndicator; _reqResponseAgent = new RequestResponseAgent(new RelayRequestMessageSender ( () => RequestTimeOut, (clientID, model) => SendModelMessage(clientID, model) )); }
/// <summary> /// Initializes a new instance of the SiS.Communication.Tcp.TcpClientEx. /// </summary> /// <param name="autoReconnect">true if use auto reconnect feature; otherwise, false.</param> /// <param name="packetSpliter">The spliter which is used to split stream data into packets.</param> public TcpClientEx(bool autoReconnect, IPacketSpliter packetSpliter) { byte[] array = Guid.NewGuid().ToByteArray(); _clientID = BitConverter.ToInt64(array, 0); _packetSpliter = packetSpliter; _autoReconnect = autoReconnect; _tcpConfig = new TcpClientConfig(); //_tcpConfig = _tcpClientConfig; _reconnectWaitEvent = new ManualResetEvent(false); if (SynchronizationContext.Current == null) { SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); } _syncContext = SynchronizationContext.Current; }
/// <summary> /// Initializes a new instance of the SiS.Communication.Tcp.TcpClientEx using specific packet spliter without auto reconnect feature. /// </summary> /// <param name="packetSpliter">The spliter which is used to split stream data into packets.</param> public TcpClientEx(IPacketSpliter packetSpliter) : this(false, packetSpliter) { }
/// <summary> /// Initializes a new instance of the SiS.Communication.Tcp.TcpServer using specific packet spliter. /// </summary> /// <param name="packetSpliter">The spliter used to split stream data into complete packets.</param> public TcpServer(IPacketSpliter packetSpliter) { _packetSpliter = packetSpliter; }