本文整理汇总了C++中EndPoint::IPToString方法的典型用法代码示例。如果您正苦于以下问题:C++ EndPoint::IPToString方法的具体用法?C++ EndPoint::IPToString怎么用?C++ EndPoint::IPToString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EndPoint
的用法示例。
在下文中一共展示了EndPoint::IPToString方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessNewUDPConnectionAttempt
bool NetworkServer::ProcessNewUDPConnectionAttempt(Socket *listenSocket, const EndPoint &endPoint, const char *data, size_t numBytes)
{
LOG(LogInfo, "New inbound connection attempt from %s with datagram of size %d.", endPoint.ToString().c_str(), (int)numBytes);
if (!acceptNewConnections)
{
LOG(LogError, "Ignored a new connection attempt since server is set not to accept new connections.");
return false;
}
// Pass the datagram contents to a callback that decides whether this connection is allowed.
if (networkServerListener)
{
bool connectionAccepted = networkServerListener->NewConnectionAttempt(endPoint, data, numBytes);
if (!connectionAccepted)
{
LOG(LogError, "Server listener did not accept the new connection.");
return false;
}
}
///\todo Check IP banlist.
///\todo Check that the maximum number of active concurrent connections is not exceeded.
std::string remoteHostName = endPoint.IPToString();
// Accept the connection and create a new UDP socket that communicates to that endpoint.
Socket *socket = owner->CreateUDPSlaveSocket(listenSocket, endPoint, remoteHostName.c_str());
if (!socket)
{
LOG(LogError, "Network::ConnectUDP failed! Cannot accept new UDP connection.");
return false;
}
UDPMessageConnection *udpConnection = new UDPMessageConnection(owner, this, socket, ConnectionOK);
Ptr(MessageConnection) connection(udpConnection);
{
PolledTimer timer;
Lockable<ConnectionMap>::LockType clientsLock = clients.Acquire();
(*clientsLock)[endPoint] = connection;
LOG(LogWaits, "NetworkServer::ProcessNewUDPConnectionAttempt: Accessing the connection list took %f msecs.",
timer.MSecsElapsed());
}
// Pass the MessageConnection to the main application so it can hook the inbound packet stream.
if (networkServerListener)
networkServerListener->NewConnectionEstablished(connection);
connection->SendPingRequestMessage(false);
owner->AssignConnectionToWorkerThread(connection);
owner->NewMessageConnectionCreated(connection);
LOG(LogInfo, "Accepted new UDP connection.");
return true;
}
示例2: sizeof
Socket *NetworkServer::AcceptConnections(Socket *listenSocket)
{
if (!listenSocket || !listenSocket->Connected())
return 0;
sockaddr_in remoteAddress;
memset(&remoteAddress, 0, sizeof(remoteAddress));
socklen_t remoteAddressLen = sizeof(remoteAddress);
SOCKET &listenSock = listenSocket->GetSocketHandle();
SOCKET acceptSocket = accept(listenSock, (sockaddr*)&remoteAddress, &remoteAddressLen);
if (acceptSocket == KNET_ACCEPT_FAILURE)
{
int error = Network::GetLastError();
if (error != KNET_EWOULDBLOCK)
{
LOG(LogError, "NetworkServer::AcceptConnections: accept failed: %s", Network::GetErrorString(error).c_str());
closesocket(listenSock);
listenSock = INVALID_SOCKET;
}
return 0;
}
EndPoint remoteEndPoint = EndPoint::FromSockAddrIn(remoteAddress);
std::string remoteHostName = remoteEndPoint.IPToString();
LOG(LogInfo, "Accepted incoming TCP connection from %s:%d.", remoteHostName.c_str(), (int)remoteEndPoint.port);
EndPoint localEndPoint;
sockaddr_in localSockAddr;
socklen_t namelen = sizeof(localSockAddr);
int sockRet = getsockname(acceptSocket, (sockaddr*)&localSockAddr, &namelen); // Note: This works only if family==INETv4
localEndPoint = EndPoint::FromSockAddrIn(localSockAddr);
std::string localHostName = owner->LocalAddress();
const size_t maxTcpSendSize = 65536;
Socket *socket = owner->StoreSocket(Socket(acceptSocket, localEndPoint, localHostName.c_str(), remoteEndPoint, remoteHostName.c_str(), SocketOverTCP, ServerClientSocket, maxTcpSendSize));
socket->SetBlocking(false);
return socket;
}
示例3: socket
Socket *Network::ConnectSocket(const char *address, unsigned short port, SocketTransportLayer transport)
{
addrinfo *result = NULL;
addrinfo *ptr = NULL;
addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = (transport == SocketOverTCP) ? SOCK_STREAM : SOCK_DGRAM;
hints.ai_protocol = (transport == SocketOverTCP) ? IPPROTO_TCP : IPPROTO_UDP;
char strPort[256];
sprintf(strPort, "%d", (unsigned int)port);
int ret = getaddrinfo(address, strPort, &hints, &result);
if (ret != 0)
{
LOG(LogError, "Network::Connect: getaddrinfo failed: %s", GetErrorString(ret).c_str());
return 0;
}
#ifdef WIN32
SOCKET connectSocket = WSASocket(result->ai_family, result->ai_socktype, result->ai_protocol,
NULL, 0, WSA_FLAG_OVERLAPPED);
#else
SOCKET connectSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
LOG(LogInfo, "A call to socket() returned a new socket 0x%8X.", (unsigned int)connectSocket);
#endif
if (connectSocket == INVALID_SOCKET)
{
LOG(LogError, "Network::Connect: Error at socket(): %s", GetLastErrorString().c_str());
freeaddrinfo(result);
return 0;
}
// Connect to server.
#ifdef WIN32
ret = WSAConnect(connectSocket, result->ai_addr, (int)result->ai_addrlen, 0, 0, 0, 0);
#else
ret = connect(connectSocket, result->ai_addr, (int)result->ai_addrlen);
#endif
if (ret == KNET_SOCKET_ERROR)
{
closesocket(connectSocket);
connectSocket = INVALID_SOCKET;
}
freeaddrinfo(result);
if (connectSocket == INVALID_SOCKET)
{
LOG(LogError, "Unable to connect to server!");
return 0;
}
EndPoint localEndPoint;
sockaddr_in sockname;
socklen_t socknamelen = sizeof(sockname);
ret = getsockname(connectSocket, (sockaddr*)&sockname, &socknamelen);
if (ret == 0)
localEndPoint = EndPoint::FromSockAddrIn(sockname);
else
LOG(LogError, "Network::ConnectSocket: getsockname failed: %s!", Network::GetLastErrorString().c_str());
EndPoint remoteEndPoint;
sockaddr_in peername;
socklen_t peernamelen = sizeof(peername);
ret = getpeername(connectSocket, (sockaddr*)&peername, &peernamelen);
if (ret == 0)
remoteEndPoint = EndPoint::FromSockAddrIn(peername);
else
LOG(LogError, "Network::ConnectSocket: getpeername failed: %s!", Network::GetLastErrorString().c_str());
std::string remoteHostName = remoteEndPoint.IPToString();
const size_t maxSendSize = (transport == SocketOverTCP) ? cMaxTCPSendSize : cMaxUDPSendSize;
Socket socket(connectSocket, localEndPoint, localHostName.c_str(), remoteEndPoint, remoteHostName.c_str(), transport, ClientSocket, maxSendSize);
socket.SetBlocking(false);
sockets.push_back(socket);
Socket *sock = &sockets.back();
return sock;
}