<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 迭代服務器 ### server代碼 ***** server.cpp ``` #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netinet/in.h> #include <thread> #include <memory> #include <vector> #include <list> #include <mutex> class client { public: client(int fd, char* ip, unsigned short int port):socket_(fd), ip_(ip), port_(port) { memset(buf, 0, sizeof(buf)); read(); } void read() { while(true) { memset(buf, 0, sizeof(buf)); if (::read(socket_,buf,sizeof(buf)- 1) <= 0) break; printf("Message from client [%s:%d]: %s\n",ip_,port_,buf); write(socket_,buf,strlen(buf)); } } private: int socket_; char buf[100]; char* ip_; unsigned short int port_; }; class peerMgr { public: int acceptClient() { struct sockaddr_in client_addr; memset(&client_addr, 0, sizeof(client_addr)); socklen_t clnt_addr_size = sizeof(client_addr); int cli_sock; char logbuf[100] = "you had connected"; char buf[100] = {0}; while(true) { puts("Server accept wait\n"); if ((cli_sock = accept(serv_socket_, (struct sockaddr*) &client_addr, &clnt_addr_size)) <= 0) { printf("cli_sock : %d,error %d\n", strerror(cli_sock),errno); continue; } printf("Have one client accpet ip:%s:%d\n",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port)); write(cli_sock,logbuf,strlen(logbuf)); std::shared_ptr<client> clients = std::make_shared<client>(cli_sock, inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port)); client_.push_back(clients); } } void start() { //創建套接字 serv_socket_ = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //將套接字和IP、端口綁定 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); //每個字節都用0填充 serv_addr.sin_family = AF_INET; //使用IPv4地址 serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具體的IP地址 serv_addr.sin_port = htons(1234); //端口 bind(serv_socket_, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); listen(serv_socket_, 20); thread_accept_.reset(new std::thread(std::bind(&peerMgr::acceptClient,this))); thread_accept_->join(); } private: std::list<std::shared_ptr<client>> client_; int serv_socket_; std::mutex mutex_; std::shared_ptr<std::thread> thread_accept_; }; int main() { std::shared_ptr<peerMgr> ac = std::make_shared<peerMgr>(); ac->start(); return 0; } ``` ### 客戶端代碼 ***** client.cpp ``` #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> int main(){ //創建套接字 int sock = socket(AF_INET, SOCK_STREAM, 0); //向服務器(特定的IP和端口)發起請求 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); //每個字節都用0填充 serv_addr.sin_family = AF_INET; //使用IPv4地址 serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具體的IP地址 serv_addr.sin_port = htons(1234); //端口 connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); //讀取服務器傳回的數據 char buffer[40] = {0}; read(sock, buffer, sizeof(buffer)-1); printf("Message form server: %s\n", buffer); while(true) { memset(buffer, 0, sizeof(buffer)); puts("Input your contents"); scanf("%s",buffer); write(sock, buffer,strlen(buffer)); memset(buffer, 0, sizeof(buffer)); read(sock, buffer, sizeof(buffer)-1); printf("Message form server: %s\n", buffer); } //關閉套接字 close(sock); return 0; } ```
                  <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>

                              哎呀哎呀视频在线观看