/// <summary> /// 连接到一个支持SM协议的计算机端口 /// </summary> /// <param name="tstr">指定远程的计算机Tcp结构</param> public TcpResult ConnectTo(TcpStruct tstr) { TcpResult result = new TcpResult(); result.Success = false; onTcpEvents(this._localTcpStruct, this._remoteTcpStruct, TcpOptionType.Connecting, null); if (Connected) { onError(_localTcpStruct, _remoteTcpStruct, TcpError.TcpClientIsConnected, null, TcpOptionType.Connecting, null); result.Success = false; result.Error = TcpError.TcpClientIsConnected; return(result); } _tc = new TcpClient(); try { _tc.Connect(tstr.IP, tstr.Port); _tcpMode = TcpMode.Client; _ns = _tc.GetStream(); result.Success = true; } catch (Exception ex) { onError(_localTcpStruct, _remoteTcpStruct, TcpError.ServerOffline, ex, TcpOptionType.Connecting, null); result.Error = TcpError.ServerOffline; result.Success = false; return(result); } _remoteTcpStruct.IP = tstr.IP; _remoteTcpStruct.Port = tstr.Port; FormatIPStringToTcpStruct(_tc.Client.LocalEndPoint.ToString(), ref _localTcpStruct); onTcpEvents(_localTcpStruct, _remoteTcpStruct, TcpOptionType.Connected, null); if (!UseBlockRead) { Threads.ExecAsync(ReadDataFromConnectRemote); } return(result); }
/// <summary> /// ���ӵ�һ��֧��SMЭ��ļ�����˿� /// </summary> /// <param name="tstr">ָ��Զ�̵ļ����Tcp�ṹ</param> public TcpResult ConnectTo(TcpStruct tstr) { TcpResult result = new TcpResult(); result.Success = false; onTcpEvents(this._localTcpStruct, this._remoteTcpStruct, TcpOptionType.Connecting, null); if (Connected) { onError(_localTcpStruct, _remoteTcpStruct, TcpError.TcpClientIsConnected, null, TcpOptionType.Connecting, null); result.Success = false; result.Error = TcpError.TcpClientIsConnected; return result; } _tc = new TcpClient(); try { _tc.Connect(tstr.IP, tstr.Port); _tcpMode = TcpMode.Client; _ns = _tc.GetStream(); result.Success = true; } catch (Exception ex) { onError(_localTcpStruct, _remoteTcpStruct, TcpError.ServerOffline, ex, TcpOptionType.Connecting, null); result.Error = TcpError.ServerOffline; result.Success = false; return result; } _remoteTcpStruct.IP = tstr.IP; _remoteTcpStruct.Port = tstr.Port; FormatIPStringToTcpStruct(_tc.Client.LocalEndPoint.ToString(), ref _localTcpStruct); onTcpEvents(_localTcpStruct, _remoteTcpStruct, TcpOptionType.Connected, null); if (!UseBlockRead) Threads.ExecAsync(ReadDataFromConnectRemote); return result; }