private SocketReceiveData TimeoutRead() { try { byte[] data = new byte[1004]; EndPoint client = new IPEndPoint(IPAddress.Any, 0); int count = socketClient.ReceiveFrom(data, ref client); LogHelper.LogUtil.WXHOOKUI.InfoFormat("client: [{0}]", client); byte[] ret = new byte[count]; Array.Copy(data, ret, count); SocketReceiveData socketReceiveData = new SocketReceiveData(); socketReceiveData.ReceiveData = data; socketReceiveData.ClientOfReceiveFrom = client; return(socketReceiveData); } catch (SocketException e) { if (e.SocketErrorCode == SocketError.TimedOut) { return(null); } throw; } }
private void HandleRecvByte(SocketReceiveData socketReceiveData) { byte[] b = socketReceiveData.ReceiveData; byte[] b1 = new byte[4]; byte[] b2 = new byte[1001]; System.Array.Copy(b, b1, 4); System.Array.Copy(b, 4, b2, 0, 1000); int type = BitConverter.ToInt32(b1, 0); string content = Encoding.UTF8.GetString(b2); int _index = content.IndexOf("\0"); content = content.Substring(0, _index); if (this.InvokeRequired) { HandleMessageCB stcb = new HandleMessageCB(HandMessagecb); this.Invoke(stcb, new object[] { type, content, socketReceiveData.ClientOfReceiveFrom }); } }