public void SendString(string content, PacketPriority priority = PacketPriority.MEDIUM_PRIORITY, PacketReliability reliability = PacketReliability.RELIABLE) { byte[] bs = Encoding.UTF8.GetBytes(content); RakString s = new RakString(); s.AppendBytes(bs, (uint)bs.Length); server.Send(s.C_String(), (int)s.GetLength(), priority, reliability, '\0', RakNet.RakNet.UNASSIGNED_SYSTEM_ADDRESS, true); }
private void Listening() { while (true) { Thread.Sleep(10); for (p = server.Receive(); p != null; server.DeallocatePacket(p), p = server.Receive()) { AddSenderInfo(string.Format("Time:{0} IP:{1} GUID:{2} Length:{3}", System.DateTime.Now.TimeOfDay, p.systemAddress.ToString(), p.guid, p.length)); packetIdentifier = GetPacketIdentifier(p); switch ((DefaultMessageIDTypes)packetIdentifier) { case DefaultMessageIDTypes.ID_DISCONNECTION_NOTIFICATION: MessageBox("ID_DISCONNECTION_NOTIFICATION"); break; case DefaultMessageIDTypes.ID_ALREADY_CONNECTED: MessageBox("ID_ALREADY_CONNECTED with guid " + p.guid); break; case DefaultMessageIDTypes.ID_INCOMPATIBLE_PROTOCOL_VERSION: MessageBox("ID_INCOMPATIBLE_PROTOCOL_VERSION "); break; case DefaultMessageIDTypes.ID_REMOTE_DISCONNECTION_NOTIFICATION: MessageBox("ID_REMOTE_DISCONNECTION_NOTIFICATION "); break; case DefaultMessageIDTypes.ID_REMOTE_CONNECTION_LOST: // Server telling the clients of another client disconnecting forcefully. You can manually broadcast this in a peer to peer enviroment if you want. MessageBox("ID_REMOTE_CONNECTION_LOST"); break; case DefaultMessageIDTypes.ID_CONNECTION_BANNED: // Banned from this server MessageBox("We are banned from this server.\n"); break; case DefaultMessageIDTypes.ID_CONNECTION_ATTEMPT_FAILED: MessageBox("Connection attempt failed "); break; case DefaultMessageIDTypes.ID_NO_FREE_INCOMING_CONNECTIONS: MessageBox("Server is full "); break; case DefaultMessageIDTypes.ID_INVALID_PASSWORD: MessageBox("ID_INVALID_PASSWORD\n"); break; case DefaultMessageIDTypes.ID_CONNECTION_LOST: // Couldn't deliver a reliable packet - i.e. the other system was abnormally // terminated MessageBox("ID_CONNECTION_LOST\n"); break; case DefaultMessageIDTypes.ID_CONNECTION_REQUEST_ACCEPTED: // This tells the client they have connected MessageBox("ID_CONNECTION_REQUEST_ACCEPTED to %s " + p.systemAddress.ToString() + "with GUID " + p.guid.ToString()); MessageBox("My external address is:" + server.GetExternalID(p.systemAddress).ToString()); break; case DefaultMessageIDTypes.ID_CONNECTED_PING: case DefaultMessageIDTypes.ID_UNCONNECTED_PING: MessageBox("Ping from " + p.systemAddress.ToString(true)); break; default: RakString s = new RakString(); s.AppendBytes(p.data, (uint)p.data.Length); AddReceivedData(s.C_String()); BinaryData.Add(p.data); break; } } } }