MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / socketClientAcceptSnippet

Method socketClientAcceptSnippet

Tests/Libraries/Socket/SocketTest.cpp:295–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

293}
294
295SC::Result SC::SocketTest::socketClientAcceptSnippet()
296{
297 SocketDescriptor serverSocket;
298 SocketServer server(serverSocket);
299
300 // Look for an available port
301 constexpr int tcpPort = 5050;
302 const StringView serverAddress = "::1"; // or "127.0.0.1"
303 SocketIPAddress nativeAddress;
304 SC_TRY(nativeAddress.fromAddressPort(serverAddress, tcpPort));
305
306 // Create (TCP) socket and start listening
307 SC_TRY(serverSocket.create(nativeAddress.getAddressFamily()));
308 SC_TRY(server.bind(nativeAddress));
309 SC_TRY(server.listen(1)); // Start listening (skip this for UDP sockets)
310
311 SocketFlags::AddressFamily family;
312 SC_TEST_EXPECT(serverSocket.getAddressFamily(family));
313
314 //! [socketClientAcceptSnippet]
315 SocketDescriptor acceptedClientSocket;
316 // ... assuming to obtain a TCP socket using SocketServer::accept
317 SC_TRY(server.accept(family, acceptedClientSocket));
318 SC_TRY(acceptedClientSocket.isValid());
319
320 // Read some data blocking until it's available
321 char buf[256];
322
323 SocketClient acceptedClient(acceptedClientSocket);
324 Span<char> readData;
325 SC_TRY(acceptedClient.read({buf, sizeof(buf)}, readData));
326
327 // ... later on
328
329 // Read again blocking but with a timeout of 10 seconds
330 SC_TRY(acceptedClient.readWithTimeout({buf, sizeof(buf)}, readData, 10 * 1000));
331
332 // Close the client
333 SC_TRY(acceptedClientSocket.close());
334 //! [socketClientAcceptSnippet]
335 return Result(true);
336}
337
338SC::Result SC::SocketTest::socketClientConnectSnippet()
339{

Callers

nothing calls this directly

Calls 8

getAddressFamilyMethod · 0.80
ResultClass · 0.50
createMethod · 0.45
bindMethod · 0.45
acceptMethod · 0.45
isValidMethod · 0.45
readMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected