private void User_OnMessageStatusReceivedCallback(ChatLib.Message message) { if (message.StatusType == StatusType.Connected) { print(message.Name + " Connected", Log); } else if (message.StatusType == StatusType.Disconnected) { print(message.Name + " Disconnected", Log); } else if (message.StatusType == StatusType.Disconnecting) { if (message.Content != null || message.Content != "") { print(message.Content, Log, Color.Red); } print(message.Name + " Disconnected", Log); user.Close(); tcpClient.Close(); user = null; tcpClient.Dispose(); ChangeConnectionInputState(true); } else if (message.StatusType == StatusType.ErrorDisconnect) { print(message.Content, Log); user.Close(); tcpClient.Close(); user = null; tcpClient.Dispose(); ChangeConnectionInputState(true); } }
private void Mainclose() { /** * 关闭所有 * 1. isLogin = false * 2. myListener关闭 * 3. textbox清空 * 4. listbox清空 * 5. 向Server发送close操作码 * 6. 登录、注销按钮切换 * */ isLogin = false; myListener.Stop(); textBox1.Text = ""; textBox2.Text = ""; listBox1.Items.Clear(); try { Server.bw.Write("close"); Server.bw.Flush(); Server.Close(); Server = null; } catch (Exception e) { } button2.Enabled = true; button3.Enabled = false; }
static void Main(string[] args) { User user; while (true) //서버에 연결될때까지 연결시도 { try { TcpClient client = new TcpClient("127.0.0.1", 15000); user = new User(client); break; } catch //서버가 닫혀있는 경우의 예외처리 { Console.WriteLine("서버가 응답하지 않음..."); Thread.Sleep(5000); } } //ID 입력 및 송신 Console.Write("ID 입력 : "); user.id = Console.ReadLine(); user.SendData(user.id); Task recv_task = new Task(new Action(user.RecvData)); recv_task.Start(); for (; ;) { string chat = Console.ReadLine(); bool isConnected = user.SendData(chat); if (!isConnected) { Console.WriteLine("서버연결 끊김"); break; } } user.Close(); }