/// <summary> /// 用户名称 /// </summary> /// <param name="userName"></param> internal Client(string userName) { this.userName = userName; this.client = new ChatServer.TcpClient.Server.TcpOpenClient(null, (client, socket) => { if (client.login(socket, userName)) { Console.WriteLine("CurrentUser : "******"Login Error : " + userName); return(false); }); this.client._TcpClient_.OnSetSocket((socket) => { if (socket.IsSocketVersion(ref this.socket)) { getUserKeepCallback = client.getUser((user) => { if (user.Type == Net.TcpServer.ReturnType.Success) { Console.WriteLine(user.Value.Type.ToString() + " + " + user.Value.Name); } }); getMessageKeepCallback = client.getMessage((message) => { if (message.Type == Net.TcpServer.ReturnType.Success) { Console.WriteLine(message.Value.Time.toString() + " " + message.Value.User + " : " + message.Value.Content); } }); Send("Hello"); } }); }
/// <summary> /// TCP 客户端套接字初始化处理 /// </summary> /// <param name="socket"></param> private void onClientSocket(AutoCSer.Net.TcpServer.ClientSocketBase socket) { Monitor.Enter(newSocketLock); try { if (socket.IsSocketVersion(ref this.socket)) { try { if (logKeepCallback != null) { logKeepCallback.Dispose(); logKeepCallback = null; } #if NoAutoCSer throw new Exception(); #else ClientId = TcpInternalClient.register(); logKeepCallback = TcpInternalClient.getLog(ClientId, onLog); #endif IsClient = true; Client.OnClient(name); return; } catch (Exception error) { AutoCSer.Log.Pub.Log.add(AutoCSer.Log.LogType.Error, error); #if DotNetStandard AutoCSer.Net.TcpServer.CommandBase.CloseClient(socket.Socket); #else socket.Socket.Dispose(); #endif } IsClient = false; } } finally { Monitor.Exit(newSocketLock); } }