HandleResult OnReceive(IntPtr connId, byte[] bytes) { // 数据到达了 try { // 获取附加数据 IntPtr clientPtr = IntPtr.Zero; if (server.GetConnectionExtra(connId, ref clientPtr)) { // ci 就是accept里传入的附加数据了 ClientInfo ci = (ClientInfo)Marshal.PtrToStructure(clientPtr, typeof(ClientInfo)); AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", ci.ConnId, ci.IpAddress, ci.Port, bytes.Length)); } else { AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, bytes.Length)); } if (server.Send(connId, bytes, bytes.Length)) { return(HandleResult.Ok); } return(HandleResult.Error); } catch (Exception) { return(HandleResult.Ignore); } }
private void buttonSend_Click(object sender, EventArgs e) { string sendContent = textBoxSendMsg.Text; if (sendContent.Length < 1) { return; } if (checkedListBoxClientList.Items.Count < 1) { return; } try { // byte[] sendBytes = Encoding.Default.GetBytes(sendContent); byte[] sendBytes = Encoding.GetEncoding("UTF-8").GetBytes(sendContent); for (int i = 0; i < checkedListBoxClientList.Items.Count; i++) { IntPtr connId = (IntPtr)Convert.ToInt32(checkedListBoxClientList.Items[i]); if (checkedListBoxClientList.GetItemChecked(i)) { server.Send(connId, sendBytes, sendBytes.Length); } } textBoxSendMsg.Text = string.Empty; } catch (Exception exc) { ShowMSG(string.Format("发送失败:{0}", exc.Message)); } }
HandleResult OnReceive(IntPtr connId, byte[] bytes) { // 数据到达了 try { // 获取附加数据 var clientInfo = server.GetExtra <ClientInfo>(connId); if (clientInfo != null) { // clientInfo 就是accept里传入的附加数据了 AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", clientInfo.ConnId, clientInfo.IpAddress, clientInfo.Port, bytes.Length)); } else { AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, bytes.Length)); } if (server.Send(connId, bytes, bytes.Length)) { return(HandleResult.Ok); } return(HandleResult.Error); } catch (Exception) { return(HandleResult.Ignore); } }
public void Send(Package pkg) { lock (sendLock) { if (pkg == null) { return; } try { System.IO.MemoryStream msWBuffer = new System.IO.MemoryStream(); Thrift.Transport.TTransport tp = new Thrift.Transport.TStreamTransport(null, msWBuffer); Thrift.Protocol.TCompactProtocol cp = new Thrift.Protocol.TCompactProtocol(tp); switch (pkg.PackType) { case PackType.Command: { cp.WriteI16(PackType.Command); cp.WriteString((string)pkg.Content); } break; case PackType.TaskModel: { cp.WriteI16(PackType.TaskModel); TaskModel task = pkg.Content as TaskModel; task.Write(cp); } break; default: break; } tp.Flush(); byte[] buffer = msWBuffer.ToArray(); server.Send(pkg.ConnId, buffer, buffer.Length); msWBuffer.Flush(); } catch (Exception ex) { Console.WriteLine("发送消息错误:" + ex.Message); } } }
HandleResult OnReceive(IntPtr connId, IntPtr pData, int length) { // 数据到达了 try { // 从pData中获取字符串 // string str = Marshal.PtrToStringAnsi(pData, length); // intptr转byte[] // byte[] bytes = new byte[length]; // Marshal.Copy(pData, bytes, 0, length); // 获取附加数据 IntPtr clientPtr = IntPtr.Zero; if (server.GetConnectionExtra(connId, ref clientPtr)) { // ci 就是accept里传入的附加数据了 ClientInfo ci = (ClientInfo)Marshal.PtrToStructure(clientPtr, typeof(ClientInfo)); AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", ci.ConnId, ci.IpAddress, ci.Port, length)); } else { AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, length)); } if (server.Send(connId, pData, length)) { return(HandleResult.Ok); } return(HandleResult.Error); } catch (Exception) { return(HandleResult.Ignore); } }