Exemple #1
0
/// creates an UDT server and connects using a socket to it
int testUDTServer () {
	UDTServer server;
	Error e = server.listen (0);
	tassert (!e, "Should find a port");
	int port = server.port ();
	printf ("Listening on %d\n", port);

	UDTSocket socket;
	ResultCallbackHelper helper;
	socket.connectAsync ("localhost", port, helper.onResultFunc());
	helper.wait(2000);
	tassert (helper.ready() && helper.result() == error::InvalidArgument, "Should not accept DNS names");
	socket.connectAsync ("127.0.0.1", port, helper.onResultFunc()); // localhost won't work!
	tassert (helper.waitReadyAndNoError(2000), "Should connect");

	test::millisleep_locked (100);
	tassert (server.pendingConnections() == 1, "Should have one pending connection");

	UDTSocket * socket2 = server.nextConnection();
	tassert (socket2->error() == NoError, "Incoming socket shall be ok");
	tassert (socket.error() == NoError, "Outgoing socket shall be ok");

	tassert (testSockets (&socket, socket2) == 0, "Sockets shall support this test");

	socket2->close();
	test::millisleep_locked (100);
	tassert1 (!socket.isConnected());
	delete socket2;

	return 0;
}