public void OnRecievedData(IAsyncResult ar) { SocketItem item = (SocketItem)ar.AsyncState; byte[] buff = item.GetRecievedData(ar); // If no data was recieved then the connection is probably dead if (buff.Length < 1) { Console.WriteLine("Client {0}, disconnected", item.Socket.RemoteEndPoint); item.Socket.Close(); this.RemoveSocket(item); return; } //抛出事件 string context = Encoding.UTF8.GetString(buff, 0, buff.Length); item.BuffReceive = context; if (context.Length > 0) { //抛出事件 if (this.OnSocketReceive != null) { this.OnSocketReceive.BeginInvoke(this.DeviceType, item.Socket, buff, context, null, this.OnSocketReceive); //this.OnSocketReceive.BeginInvoke(this.DeviceType, item.Socket, buff, context, InvokeCallBack, this.OnSocketReceive); } } item.SetupRecieveCallback(this.OnRecievedData); }
private void NewConnection(System.Net.Sockets.Socket socket) { try { SocketItem item = new SocketItem(socket); //Sokcets.Add(socket.RemoteEndPoint.ToString(), item); this.AddSocket(item); item.SetupRecieveCallback(this.OnRecievedData); } catch { } }