private void ConnectChat() { textBoxName.Text = UserName; UdpClient client = new UdpClient(); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("230.230.230.230"), 8005); try { TalkPacket msg = new TalkPacket(1, UserName); client.Send(msg.getBytes(), msg.MsgLength, endPoint); client.Close(); textBoxName.Enabled = false; buttonConnect.Text = "Отключиться"; Connected = true; token = cancelTokenSource.Token; receiveUDP = new Task(() => ReceiveConnection()); receiveTCP = new Task(() => ReceiveMessage()); receiveUDP.Start(); receiveTCP.Start(); this.Invoke(new MethodInvoker(() => { ListMessages.Items.Add(" " + DateTime.Now.ToLongTimeString() + " Вы присоединились к разговору."); })); } catch (Exception ex) { client.Close(); MessageBox.Show(ex.Message); } }
public static void Process_TalkPacket(Player client, TalkPacket packet) { if (packet.Words[0] == Constants.COMMAND_PREFIX) { Commands.Handle(client, packet.Words.Substring(1).ToLower().Split(' ')); return; } switch (packet.Type) { case ChatType.Talk: client.SendToScreen(packet); break; case ChatType.Whisper: var target = Managers.PlayerManager.GetUser(packet.Hearer); if (target != null) { target.Send(packet); } else { packet.Words = packet.Hearer + " is not online"; client.Send(packet); } break; } }
private void LeaveChat() { UdpClient client = new UdpClient(); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("230.230.230.230"), 8005); try { TalkPacket msg = new TalkPacket(0); client.Send(msg.getBytes(), msg.MsgLength, endPoint); textBoxName.Enabled = true; buttonConnect.Text = "Подключиться"; Connected = false; Requested = false; cancelTokenSource.Cancel(); this.Invoke(new MethodInvoker(() => { ListMessages.Items.Add(" " + DateTime.Now.ToLongTimeString() + " Вы покинули нас."); })); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { client.Close(); } }
void OnPacketHAndled(int node, int packetType, byte[] data) { this.node = node; var packet = new TalkPacket(data); receivedText.text = packet.GetTalk().text; }
public DbChatLog(TalkPacket _packet) { Time = DateTime.Now; Type = _packet.Type; From = _packet.Speaker; To = _packet.Hearer; Message = _packet.Words; }
private void messageReceived(Packet packet, Connection connection) { TalkPacket request = (TalkPacket)packet; TalkPacket response = new TalkPacket(); response.Message = "Message returning from server: " + request.Message; connection.Send(response); }
private void connectionEstablished(Connection connection, ConnectionType connectionType) { TalkPacket talkPacket = new TalkPacket(); talkPacket.Message = "Hello World!"; Console.WriteLine("Client: Connection Established!"); connection.Send(talkPacket); }
private void ReceiveMessage() { try { while (!token.IsCancellationRequested) { TcpListener listener = new TcpListener(IPAddress.Parse(GetLocalIPAddress()), 8006); listener.Start(); TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] data = new byte[65536]; stream.Read(data, 0, data.Length); TalkPacket msg = new TalkPacket(data); IPEndPoint iep = new IPEndPoint(IPAddress.Parse(((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()), 8006); if (msg.Type == 1) { Sub sub = new Sub(Encoding.Unicode.GetString(msg.Data), iep); if (!Subs.Contains(sub)) { Subs.Add(sub); this.Invoke(new MethodInvoker(() => { ListMessages.Items.Add(" " + DateTime.Now.ToLongTimeString() + " " + sub.name + "(" + sub.endPoint.ToString() + ") " + " присоединился к разговору."); })); } } else if (msg.Type == 2) { string name = "Аноним"; foreach (Sub sub in Subs) { if (sub.endPoint.Equals(iep)) { name = sub.name; break; } } this.Invoke(new MethodInvoker(() => { ListMessages.Items.Add(DateTime.Now.ToLongTimeString() + " " + name + "(" + iep.ToString() + "): " + Encoding.Unicode.GetString(msg.Data)); })); } else { MessageBox.Show("An error occured!"); } client.Close(); stream.Close(); listener.Stop(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void ReceiveConnection() { try { while (!token.IsCancellationRequested) { UdpClient client = new UdpClient(8005); client.JoinMulticastGroup(IPAddress.Parse("230.230.230.230"), 100); IPEndPoint remoteIp = null; byte[] data = client.Receive(ref remoteIp); TalkPacket msg = new TalkPacket(data); Sub sub = new Sub(Encoding.Unicode.GetString(msg.Data), new IPEndPoint(remoteIp.Address, 8006)); client.Close(); if (msg.Type == 1) { if (!Subs.Contains(sub)) { Subs.Add(sub); } this.Invoke(new MethodInvoker(() => { ListMessages.Items.Add(" " + DateTime.Now.ToLongTimeString() + " " + sub.name + "(" + sub.endPoint.ToString() + ") " + " присоединился к разговору."); })); msg = new TalkPacket(1, UserName); Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sender.Connect(sub.endPoint.Address, 8006); sender.Send(msg.getBytes(), SocketFlags.None); sender.Close(); } else if (msg.Type == 0) { foreach (Sub Ssub in Subs) { if (Ssub.endPoint == sub.endPoint) { Subs.Remove(Ssub); break; } } this.Invoke(new MethodInvoker(() => { ListMessages.Items.Add(" " + DateTime.Now.ToLongTimeString() + " " + sub.name + "(" + sub.endPoint.ToString() + "): " + " покинул нас."); })); } else { MessageBox.Show("An error occured!"); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void ReceiveMessage(ListBox lb) { TcpListener listener = new TcpListener(IPAddress.Parse(GetLocalIPAddress()), 50); listener.Start(); byte[] data = new byte[65536]; try { while (!token.IsCancellationRequested) { TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); stream.Read(data, 0, data.Length); TalkPacket msg = new TalkPacket(data); IPEndPoint iep = (IPEndPoint)client.Client.RemoteEndPoint; if (msg.Type == 1) { Sub sub = new Sub(msg.Data.ToString(), iep); if (!Subs.Contains(sub)) { Subs.Add(sub); lb.Items.Add(" " + sub.name + " присоединился к разговору."); } } else if (msg.Type == 2) { string name = "Аноним"; foreach (Sub sub in Subs) { if (sub.endPoint.Equals(iep)) { name = sub.name; break; } } lb.Items.Add(name + ": " + Encoding.ASCII.GetString(msg.Data)); } else { MessageBox.Show("An error occured!"); } client.Close(); stream.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } listener.Stop(); }
private void ReceiveConnection(ListBox lb) { UdpClient client = new UdpClient(8005); client.JoinMulticastGroup(IPAddress.Parse("230.230.230.230"), 50); IPEndPoint remoteIp = null; try { while (!token.IsCancellationRequested) { byte[] data = client.Receive(ref remoteIp); TalkPacket msg = new TalkPacket(data); Sub sub = new Sub(msg.Data.ToString(), remoteIp); if (msg.Type == 1) { if (!Subs.Contains(sub)) { Subs.Add(sub); } lb.Items.Add(" " + sub.name + " присоединился к разговору."); TcpClient sender = new TcpClient(remoteIp); NetworkStream stream = sender.GetStream(); msg = new TalkPacket(1, UserName); stream.Write(msg.getBytes(), 0, msg.MsgLength); stream.Close(); sender.Close(); } else if (msg.Type == 0) { if (Subs.Contains(sub)) { Subs.Remove(sub); lb.Items.Add(" " + sub.name + " покинул нас."); } } else { MessageBox.Show("An error occured!"); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } client.Close(); }
private void buttonSend_Click(object sender, EventArgs e) { if (Connected && textBoxMsg.Text.Length > 0) { TalkPacket msg = new TalkPacket(2, textBoxMsg.Text); ListMessages.Items.Add(" " + DateTime.Now.ToLongTimeString() + " Вы: " + textBoxMsg.Text); textBoxMsg.Text = ""; Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); foreach (Sub sub in Subs) { client.Connect(sub.endPoint); client.Send(msg.getBytes(), SocketFlags.None); client.Close(); } } else { MessageBox.Show("Вы не подключены к чату."); } }
private void buttonSend_Click(object sender, EventArgs e) { if (Connected) { TalkPacket msg = new TalkPacket(3, textBoxMsg.Text); ListMessages.Items.Add(" Вы: " + textBoxMsg.Text); textBoxMsg.Text = ""; foreach (Sub sub in Subs) { IPEndPoint iep = sub.endPoint; TcpClient client = new TcpClient(iep); NetworkStream stream = client.GetStream(); stream.Write(msg.getBytes(), 0, msg.MsgLength); stream.Close(); client.Close(); } } else { MessageBox.Show("Вы не подключены к чату."); } }
private void LeaveChat(ListBox lb) { UdpClient client = new UdpClient(); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("230.230.230.230"), 8005); try { TalkPacket msg = new TalkPacket(0); client.Send(msg.getBytes(), msg.MsgLength, endPoint); textBoxName.Enabled = true; buttonConnect.Text = "Подключиться"; Connected = false; cancelTokenSource.Cancel(); lb.Items.Add(" Вы покинули нас."); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { client.Close(); } }
private void messageReceived(Packet packet, Connection connection) { TalkPacket response = (TalkPacket)packet; Console.WriteLine($"Client: Message received! {response.Message}"); }