server端雙socket 設計方式

chinamaoge發表於2020-11-29

server端雙socket 設計方式

專案場景:

設計一個socket server端傳輸資料,在server傳輸執行緒中設計兩個server socket套接字。
主要是想闡述為什麼設計兩個socket server,設計兩個socket server的目的。

設計目的與意義:

一個server端是現實和外部的建立socket 通訊連線,一個server端實現對相應埠進行資料傳輸。
程式碼如下:

ServerSocket server (m_port, m_pipefds[0]);
ServerSocket new_sock(m_pipefds[0]);
int rc = server.accept(new_sock, pipeflag, m_client_connected);
Socket::accept(sock)

ServerSocket::ServerSocket(unsigned short port, int pipefd){
    bool rc = Socket::create();
    if (port) {
        rc = Socket::bind(port);}
    rc = Socket::listen();
    if (pipefd >= 0) {
        SetupEpoll(pipefd);}
}

bool Socket::accept(Socket &new_socket) const
{
    int addr_length = sizeof(m_addr);
    new_socket.m_sock = ::accept(m_sock, (sockaddr *) &m_addr, (socklen_t *) &addr_length);
    if (new_socket.m_sock <= 0) {
        return false;}
    return true;
}

sock.SetupEpoll(m_pipefd);

相關文章