SocketStream ServerSocket::Accept() { if (mSocket == -1) { return SocketStream(); } int sockfd = accept(mSocket, nullptr, nullptr); if (sockfd == -1) { return SocketStream(); } return SocketStream(sockfd); }
public: void find(const char * name, int port){ SocketStream s = SocketStream(); struct hostent * other_host; /* procura maquina pelo IP */ if((other_host = gethostbyname(name))==NULL) cout << "error: gethostbyname" << endl; /* prepara o endereco do servidor */ _addr.sin_family = AF_INET; // tipo do socket _addr.sin_port = htons(port); // porta _addr.sin_addr = *((struct in_addr *)other_host->h_addr); // endereco da maquina if (connect(_socketServer, (struct sockaddr *)&(_addr),sizeof(struct sockaddr)) < 0) cout << "error: connect"<< endl; }
NetLib::SocketStream NetLib::ServerSocketStream::ServerSocket::GetConnection() throw (CannotConnect) { // Listen for a connection, indefinitely listen(mSockInfo.mSocketID, 5); // Instantiate neccessary variables SocketInfo vNewSocket; socklen_t vSize = sizeof(vNewSocket.mSocketAddress); // Ater a connection pops up, accept vNewSocket.mSocketID = accept(mSockInfo.mSocketID, (sockaddr*)(&vNewSocket.mSocketAddress), &vSize); if (vNewSocket.mSocketID < 0) throw CannotConnect(""); // Generate SocketInfo to create the new SocketStream return SocketStream(vNewSocket); }
SocketStream Socket::getSocketStream() { return SocketStream(m_socket); }