Implement Socket::RecvFrom(ReceiveBuffer& buffer) in PhysicalSocketServer

And RTC_CHECK(NOTREACHED) Socket::RecvFrom(void* pv..)

This cl also change usage of PhysicalSocket to use PhysicalSocket::RecvFrom(ReceivedBuffer&) in Nat and tests.
Note that Socket::RecvFrom(ReceiveBuffer& buffer) is already used in AsyncUdpSocket.( https://webrtc-review.googlesource.com/c/src/+/332200)
AsyncTCPSocket uses Socket::Recv(). Therefore, there should be no production usage left of Socket::RecvFrom(void* pv..) in open source webrtc.

Follow up cls should remove usage of Socket::RecvFrom(void* pv..) in implementations of rtc:AsyncSocketAdapter such as FirewallSocketAdapter.

Change-Id: I597dc32b14be98e954a3dc419723f043e8a7e19e

Bug: webrtc:15368
Change-Id: I597dc32b14be98e954a3dc419723f043e8a7e19e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/332341
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41635}
diff --git a/rtc_base/nat_unittest.cc b/rtc_base/nat_unittest.cc
index 742e0d6..978a30a 100644
--- a/rtc_base/nat_unittest.cc
+++ b/rtc_base/nat_unittest.cc
@@ -233,12 +233,12 @@
   const char* buf = "hello other socket";
   size_t len = strlen(buf);
   int sent = client->SendTo(buf, len, server->GetLocalAddress());
-  SocketAddress addr;
-  const size_t kRecvBufSize = 64;
-  char recvbuf[kRecvBufSize];
+
   Thread::Current()->SleepMs(100);
-  int received = server->RecvFrom(recvbuf, kRecvBufSize, &addr, nullptr);
-  return received == sent && ::memcmp(buf, recvbuf, len) == 0;
+  rtc::Buffer payload;
+  Socket::ReceiveBuffer receive_buffer(payload);
+  int received = server->RecvFrom(receive_buffer);
+  return received == sent && ::memcmp(buf, payload.data(), len) == 0;
 }
 
 void TestPhysicalInternal(const SocketAddress& int_addr) {