private void appChat() { if (OnServerLog != null) { OnServerLog("\n<< Chat数据处理 >>"); } try { int neckLen = (int)(System.Text.Encoding.UTF8.GetChars(data, 1, 1)[0]); String neckName = System.Text.Encoding.UTF8.GetString(data, 2, neckLen); String message = System.Text.Encoding.UTF8.GetString(data, 2 + neckLen, bytesRead - 2 - neckLen); ChaitMirror targetClient = (ChaitMirror)ChaitServer.Instance.Clients[neckName]; String msgStr = System.Convert.ToChar(CProtocol.Chat).ToString() + (Char)System.Text.Encoding.UTF8.GetBytes(ClientNeck).Length + ClientNeck + message; targetClient.transSendMsg(msgStr); if (OnServerLog != null) { OnServerLog("[数据][私聊消息][来源:" + ClientNeck + "][目标:" + neckName + "][消息:******]"); } } catch (Exception) { throw; } if (OnServerLog != null) { OnServerLog("\n"); } }
private void appVideoAcceptHandler() { if (OnServerLog != null) { OnServerLog("\n<< VideoAccept数据处理 >>"); } int neckLen = (int)(Encoding.UTF8.GetChars(data, 1, 1)[0]); String neckname = Encoding.UTF8.GetString(data, 2, neckLen); int sendPort = (int)(Encoding.UTF8.GetChars(data, 2 + neckLen, 4)[0]); int spLen = Encoding.UTF8.GetByteCount(((char)sendPort).ToString()); int recvPort = (int)(Encoding.UTF8.GetChars(data, 2 + neckLen + spLen, 4)[0]); ChaitMirror targetClient = ChaitServer.Instance.Clients[neckname]; String ip = ClientIP.Split(new char[] { ':' })[0]; String msgStr = System.Convert.ToChar(CProtocol.VideoAccept).ToString() + ((char)Encoding.UTF8.GetBytes(ClientNeck).Length).ToString() + ClientNeck + ((char)Encoding.UTF8.GetBytes(ip).Length).ToString() + ip + ((char)sendPort).ToString() + ((char)recvPort).ToString(); targetClient.transSendMsg(msgStr); if (OnServerLog != null) { OnServerLog(String.Format("{0}接受了{1}的视频聊天请求", ClientNeck, neckname)); } if (OnServerLog != null) { OnServerLog("\n"); } }
private void appFileAcceptHandler() { if (OnServerLog != null) { OnServerLog("\n<< FileAccept数据处理 >>"); } int neckLen = (int)(System.Text.Encoding.UTF8.GetChars(data, 1, 1)[0]); if (neckLen == 0) { Console.WriteLine("文件接受信息中含有非法参数,目标客户端昵称长度必须非0"); } else { // 传递对提供客户端的文件接受 String neckName = System.Text.Encoding.UTF8.GetString(data, 2, neckLen); String safeFileName = System.Text.Encoding.UTF8.GetString(data, 2 + neckLen, bytesRead - 2 - neckLen); ChaitMirror targetClient = (ChaitMirror)ChaitServer.Instance.Clients[neckName]; String msgStr = System.Convert.ToChar(CProtocol.FileAccept).ToString() + (Char)System.Text.Encoding.UTF8.GetBytes(ClientNeck).Length + ClientNeck + (Char)System.Text.Encoding.UTF8.GetBytes(safeFileName).Length + safeFileName + ClientIP; targetClient.transSendMsg(msgStr); OnServerLog(String.Format("'{0}'接受了'{1}'发送文件'{2}'的请求", ClientNeck, neckName, safeFileName)); } if (OnServerLog != null) { OnServerLog("\n"); } }
// 端口侦听线程 private void serverListen() { while (true) { ChaitMirror newClient = new ChaitMirror(listener.AcceptTcpClient(), onJoinHandler, onSetTargetHandler); newClient.OnServerLog = serverLogHandler; NewClients.Add(newClient.RemoteEndPoint, newClient); } }
private void appVideoRefusedHandler(int bytesRead) { if (OnServerLog != null) { OnServerLog("\n<< VideoRefuse数据处理 >>"); } String neckname = Encoding.UTF8.GetString(data, 1, bytesRead - 1); ChaitMirror targetClient = ChaitServer.Instance.Clients[neckname]; String msgStr = System.Convert.ToChar(CProtocol.VideoRefused).ToString() + ClientNeck; targetClient.transSendMsg(msgStr); if (OnServerLog != null) { OnServerLog(String.Format("{0}拒绝了{1}的视频聊天请求", ClientNeck, neckname)); } if (OnServerLog != null) { OnServerLog("\n"); } }