Implement Socket::receive<T> and refactor Socket::receiveAck

Bug: 162032964
Bug: 161389935
Test: canhalctrl up test virtual vcan3
Change-Id: I8bd351cec0d484ee4be8a40908476194958afcb1
diff --git a/automotive/can/1.0/default/libnetdevice/can.cpp b/automotive/can/1.0/default/libnetdevice/can.cpp
index ab107fd..5a1105c 100644
--- a/automotive/can/1.0/default/libnetdevice/can.cpp
+++ b/automotive/can/1.0/default/libnetdevice/can.cpp
@@ -91,7 +91,7 @@
     }
 
     nl::Socket sock(NETLINK_ROUTE);
-    return sock.send(req) && sock.receiveAck();
+    return sock.send(req) && sock.receiveAck(req);
 }
 
 }  // namespace android::netdevice::can