<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## Unix域套接字 - 套接字( socket原是網絡通信中使用的術語 - Unⅸx系統提供的域套接字提供了網絡套接字類似的功能 ## 流程 **服務端** 1. 創建套接字 2. 綁定(bind)套接字 3. 監聽( isten)套接字 4. 接收&處理信息 **客戶端** 1. 創建套接字 2. 連接套接字 3. 發送信息 ## 示例 <details> <summary>server.cpp</summary> ``` #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <string.h> #include <string.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <iostream> #define SOCKET_PATH "./domainsokcet" #define MSG_SIZE 2048 int main() { int socket_fd, accept_fd; int ret = 0; socklen_t addr_len; char msg[MSG_SIZE]; struct sockaddr_un server_addr; // 1.創建套接字 socket_fd = socket(PF_UNIX, SOCK_STREAM, 0); if (-1 == socket_fd) { std::cout << "Socket create failed!" << std::endl; return -1; } // 移除已有套接字路徑 remove(SOCKET_PATH); //內存區域置零 bzero(&server_addr, sizeof(server_addr)); server_addr.sun_family = PF_UNIX; strcpy(server_addr.sun_path, SOCKET_PATH); // 2. 綁定域套接字 std::cout << "Binding socket... " << std::endl; ret = bind(socket_fd, (sockaddr *)&server_addr, sizeof(server_addr)); if (0 > ret) { std::cout << "Binding failed! " << std::endl; return -1; } // 3. 監聽套接字 std::cout << "Listening socket... " << std::endl; ret = listen(socket_fd, 10); if (-1 == ret) { std::cout << "Listening failed... " << std::endl; return -1; } std::cout << "Waiting for new requests... " << std::endl; accept_fd = accept(socket_fd, NULL, NULL); bzero(msg, MSG_SIZE); // 4. 接收&處理信息 while (true) { recv(accept_fd, msg, MSG_SIZE, 0); std::cout << "Received message from remote:" << msg << std::endl; sleep(1); } close(accept_fd); close(socket_fd); return 0; } ``` </details> <br /> <details> <summary>client.php</summary> ``` #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <string.h> #include <string.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <iostream> // #define SOCKET_PATH "./domainsokcet" #define MSG_SIZE 2048 int main() { int socket_fd; int ret = 0; char msg[MSG_SIZE]; struct sockaddr_un server_addr; // 1.創建套接字 socket_fd = socket(PF_UNIX, SOCK_STREAM, 0); if (-1 == socket_fd) { std::cout << "Socket create failed!" << std::endl; return -1; } //內存區域置零 bzero(&server_addr, sizeof(server_addr)); server_addr.sun_family = PF_UNIX; strcpy(server_addr.sun_path, SOCKET_PATH); // 2. 鏈接套接字 ret = connect(socket_fd,(sockaddr*)&(server_addr),sizeof(server_addr)); if(-1 ==ret){ std::cout << "Connect socket failed!" << std::endl; return -1; } while (true) { std::cout << "Input message >>>" ; fgets(msg,MSG_SEND,stdin); ret = send(socket_fd,msg,MSG_SIZE,0); } close(socket_fd); return 0; } ``` </details> <br /> 編譯運行 ``` > g++ server.cpp -o server && g++ client.cpp -o client > ./client Input message >>>ww Input message >>>aaa ``` ``` > ./server Binding socket... Listening socket... Waiting for new requests... Received message from remote:ww Received message from remote:aaa ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看