mirror of
https://github.com/pocoproject/poco.git
synced 2025-11-06 21:56:23 +01:00
merge Unix Domain Sockets support and other changes from develop
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "Poco/Buffer.h"
|
||||
#include "Poco/FIFOBuffer.h"
|
||||
#include "Poco/Delegate.h"
|
||||
#include "Poco/File.h"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
@@ -52,7 +53,7 @@ void SocketTest::testEcho()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
int n = ss.sendBytes("hello", 5);
|
||||
assert (n == 5);
|
||||
char buffer[256];
|
||||
@@ -67,7 +68,7 @@ void SocketTest::testPoll()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
Stopwatch sw;
|
||||
sw.start();
|
||||
Timespan timeout(1000000);
|
||||
@@ -92,7 +93,7 @@ void SocketTest::testAvailable()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
Timespan timeout(1000000);
|
||||
ss.sendBytes("hello", 5);
|
||||
char buffer[256];
|
||||
@@ -132,7 +133,7 @@ void SocketTest::testFIFOBuffer()
|
||||
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
int n = ss.sendBytes(f);
|
||||
assert (n == 5);
|
||||
assert(1 == _notToReadable);
|
||||
@@ -169,7 +170,7 @@ void SocketTest::testConnect()
|
||||
serv.listen();
|
||||
StreamSocket ss;
|
||||
Timespan timeout(250000);
|
||||
ss.connect(SocketAddress("localhost", serv.address().port()), timeout);
|
||||
ss.connect(SocketAddress("127.0.0.1", serv.address().port()), timeout);
|
||||
}
|
||||
|
||||
|
||||
@@ -184,7 +185,7 @@ void SocketTest::testConnectRefused()
|
||||
Timespan timeout(250000);
|
||||
try
|
||||
{
|
||||
ss.connect(SocketAddress("localhost", port));
|
||||
ss.connect(SocketAddress("127.0.0.1", port));
|
||||
fail("connection refused - must throw");
|
||||
}
|
||||
catch (ConnectionRefusedException&)
|
||||
@@ -204,7 +205,7 @@ void SocketTest::testConnectRefusedNB()
|
||||
Timespan timeout(2, 0);
|
||||
try
|
||||
{
|
||||
ss.connect(SocketAddress("localhost", port), timeout);
|
||||
ss.connect(SocketAddress("127.0.0.1", port), timeout);
|
||||
fail("connection refused - must throw");
|
||||
}
|
||||
catch (TimeoutException&)
|
||||
@@ -220,7 +221,7 @@ void SocketTest::testNonBlocking()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
ss.setBlocking(false);
|
||||
|
||||
Timespan timeout(1000000);
|
||||
@@ -244,7 +245,7 @@ void SocketTest::testAddress()
|
||||
serv.bind(SocketAddress());
|
||||
serv.listen();
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", serv.address().port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", serv.address().port()));
|
||||
StreamSocket css = serv.acceptConnection();
|
||||
assert (css.peerAddress().host() == ss.address().host());
|
||||
assert (css.peerAddress().port() == ss.address().port());
|
||||
@@ -306,7 +307,7 @@ void SocketTest::testTimeout()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
|
||||
Timespan timeout0 = ss.getReceiveTimeout();
|
||||
Timespan timeout(250000);
|
||||
@@ -344,7 +345,7 @@ void SocketTest::testTimeout()
|
||||
void SocketTest::testBufferSize()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
SocketAddress sa("localhost", 1234);
|
||||
SocketAddress sa("127.0.0.1", 1234);
|
||||
StreamSocket ss(sa.family());
|
||||
|
||||
int osz = ss.getSendBufferSize();
|
||||
@@ -368,7 +369,7 @@ void SocketTest::testOptions()
|
||||
{
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
|
||||
ss.setLinger(true, 20);
|
||||
bool f;
|
||||
@@ -402,7 +403,7 @@ void SocketTest::testSelect()
|
||||
|
||||
EchoServer echoServer;
|
||||
StreamSocket ss;
|
||||
ss.connect(SocketAddress("localhost", echoServer.port()));
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
|
||||
Socket::SocketList readList;
|
||||
Socket::SocketList writeList;
|
||||
@@ -439,8 +440,8 @@ void SocketTest::testSelect2()
|
||||
|
||||
EchoServer echoServer1;
|
||||
EchoServer echoServer2;
|
||||
StreamSocket ss1(SocketAddress("localhost", echoServer1.port()));
|
||||
StreamSocket ss2(SocketAddress("localhost", echoServer2.port()));
|
||||
StreamSocket ss1(SocketAddress("127.0.0.1", echoServer1.port()));
|
||||
StreamSocket ss2(SocketAddress("127.0.0.1", echoServer2.port()));
|
||||
|
||||
Socket::SocketList readList;
|
||||
Socket::SocketList writeList;
|
||||
@@ -499,6 +500,28 @@ void SocketTest::testSelect3()
|
||||
}
|
||||
|
||||
|
||||
void SocketTest::testEchoUnixLocal()
|
||||
{
|
||||
#if defined(POCO_OS_FAMILY_UNIX)
|
||||
Poco::File socketFile("/tmp/SocketTest.sock");
|
||||
if (socketFile.exists()) socketFile.remove();
|
||||
SocketAddress localAddr(SocketAddress::UNIX_LOCAL, socketFile.path());
|
||||
EchoServer echoServer(localAddr);
|
||||
StreamSocket ss(SocketAddress::UNIX_LOCAL);
|
||||
ss.connect(localAddr);
|
||||
int n = ss.sendBytes("hello", 5);
|
||||
assert (n == 5);
|
||||
char buffer[256];
|
||||
n = ss.receiveBytes(buffer, sizeof(buffer));
|
||||
assert (n == 5);
|
||||
assert (std::string(buffer, n) == "hello");
|
||||
ss.close();
|
||||
socketFile.remove();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SocketTest::onReadable(bool& b)
|
||||
{
|
||||
if (b) ++_notToReadable;
|
||||
@@ -547,6 +570,7 @@ CppUnit::Test* SocketTest::suite()
|
||||
CppUnit_addTest(pSuite, SocketTest, testSelect);
|
||||
CppUnit_addTest(pSuite, SocketTest, testSelect2);
|
||||
CppUnit_addTest(pSuite, SocketTest, testSelect3);
|
||||
CppUnit_addTest(pSuite, SocketTest, testEchoUnixLocal);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user