<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      TCP服務(wù)器和客戶端編程步驟詳解

      TCP服務(wù)器和客戶端編程步驟詳解

      一、TCP服務(wù)器編程步驟

      1. 創(chuàng)建套接字

      int sockfd = socket(AF_INET, SOCK_STREAM, 0);
      
      • 功能:創(chuàng)建TCP套接字
      • 參數(shù)
        • AF_INET:IPv4地址族
        • SOCK_STREAM:面向連接的流式套接字(TCP)
        • 0:默認(rèn)協(xié)議
      • 返回值:套接字文件描述符,失敗返回-1

      2. 初始化服務(wù)器地址結(jié)構(gòu)

      struct sockaddr_in Ssocksddr;
      memset(&Ssocksddr, 0, sizeof(Ssocksddr));
      Ssocksddr.sin_family = AF_INET;
      Ssocksddr.sin_addr.s_addr = inet_addr("192.168.126.130");
      Ssocksddr.sin_port = htons(6543);
      
      • 功能:設(shè)置服務(wù)器IP和端口
      • 關(guān)鍵函數(shù)
        • inet_addr():將點(diǎn)分十進(jìn)制IP轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
        • htons():將主機(jī)字節(jié)序端口轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序

      3. 綁定地址

      int n = bind(sockfd, (struct sockaddr*)&Ssocksddr, sizeof(Ssocksddr));
      
      • 功能:將套接字與服務(wù)器地址綁定
      • 參數(shù):監(jiān)聽套接字、服務(wù)器地址結(jié)構(gòu)、結(jié)構(gòu)體大小

      4. 開始監(jiān)聽

      n = listen(sockfd, 5);
      
      • 功能:將套接字設(shè)為監(jiān)聽狀態(tài),等待客戶端連接
      • 參數(shù)backlog=5表示已完成三次握手的連接隊列最大長度

      5. 接受客戶端連接

      int len = sizeof(Csocksddr);
      int newsocked = accept(sockfd, (struct sockaddr*)&Csocksddr, &len);
      
      • 功能:從連接隊列中取出一個客戶端連接
      • 返回值:新的連接套接字,專門用于與該客戶端通信
      • 注意accept()會阻塞直到有客戶端連接

      6. 數(shù)據(jù)收發(fā)循環(huán)

      // 接收數(shù)據(jù)
      int n = recv(newsocked, buffer, 127, 0);
      
      // 發(fā)送數(shù)據(jù)
      send(newsocked, "Yes\n", 4, 0);
      
      • 功能:與客戶端進(jìn)行數(shù)據(jù)通信
      • recv參數(shù)
        • newsocked:連接套接字
        • buffer:接收緩沖區(qū)
        • 127:最大接收字節(jié)數(shù)
        • 0:默認(rèn)標(biāo)志

      7. 關(guān)閉連接

      close(newsocked);
      
      • 功能:關(guān)閉與客戶端的連接套接字

      二、TCP客戶端編程步驟

      1. 創(chuàng)建套接字

      int sockfd = socket(AF_INET, SOCK_STREAM, 0);
      
      • 與服務(wù)器相同

      2. 初始化服務(wù)器地址結(jié)構(gòu)

      struct sockaddr_in Ssock;
      memset(&Ssock, 0, sizeof(Ssock));
      Ssock.sin_family = AF_INET;
      Ssock.sin_addr.s_addr = inet_addr("127.0.0.1");
      Ssock.sin_port = htons(6543);
      
      • 注意:這里設(shè)置的是要連接的服務(wù)器的地址

      3. 連接服務(wù)器

      int n = connect(sockfd, (struct sockaddr*)&Ssock, sizeof(Ssock));
      
      • 功能:主動向服務(wù)器發(fā)起連接請求
      • 觸發(fā):自動完成TCP三次握手過程

      4. 數(shù)據(jù)收發(fā)循環(huán)

      // 獲取用戶輸入
      fgets(buffer, 128, stdin);
      
      // 發(fā)送數(shù)據(jù)到服務(wù)器
      send(sockfd, buffer, strlen(buffer)-1, 0);
      
      // 接收服務(wù)器回復(fù)
      recv(sockfd, buffer, 127, 0);
      
      • 注意strlen(buffer)-1是為了去掉fgets讀取的換行符

      5. 關(guān)閉連接

      close(sockfd);
      

      三、關(guān)鍵概念回顧

      套接字類型

      • 監(jiān)聽套接字:由socket()創(chuàng)建,用于listen()accept()
      • 連接套接字:由accept()返回,用于與特定客戶端通信

      字節(jié)序轉(zhuǎn)換

      • htons():主機(jī)到網(wǎng)絡(luò)短整型(端口)
      • inet_addr():字符串IP到網(wǎng)絡(luò)字節(jié)序

      核心函數(shù)對比

      函數(shù) 服務(wù)器 客戶端 功能
      socket() ? ? 創(chuàng)建套接字
      bind() ? ? 綁定地址
      listen() ? ? 開始監(jiān)聽
      accept() ? ? 接受連接
      connect() ? ? 連接服務(wù)器
      send()/recv() ? ? 數(shù)據(jù)收發(fā)
      close() ? ? 關(guān)閉連接
      posted @ 2025-10-16 11:45  四毛mao  閱讀(44)  評論(0)    收藏  舉報
      主站蜘蛛池模板: AV人摸人人人澡人人超碰| 日本极品少妇videossexhd| 亚洲国产一区二区精品专| 亚洲第一香蕉视频啪啪爽| 国产jlzzjlzz视频免费看| 成人午夜激情在线观看| 亚洲Av综合日韩精品久久久| 午夜福利激情一区二区三区| 果冻传媒18禁免费视频 | 欧美自拍嘿咻内射在线观看| 蜜桃av亚洲第一区二区| 亚洲各类熟女们中文字幕| 野花韩国高清电影| 国产精品中文字幕日韩| 91久久夜色精品国产网站| 5D肉蒲团之性战奶水欧美| 日韩精品一区二区三区视频| 精品国产亚洲区久久露脸| 亚洲国产精品一区二区三| 国产a在视频线精品视频下载| 超碰成人人人做人人爽| 国产精品一码二码三码四码| 国产成人av大片大片| 国产精品午夜福利合集| 欧美成人h亚洲综合在线观看| 日本人成精品视频在线| 日韩精品av一区二区三区| 精品亚洲国产成人av在线| 亚洲中文字幕伊人久久无码| 中文字幕乱码熟妇五十中出 | 天堂а√在线最新版中文在线| 野外做受三级视频| 少妇人妻无码专区视频| 亚洲中文字幕久久精品品| 午夜免费无码福利视频麻豆| 中国xxx农村性视频| 精品一区二区三区免费视频| 少妇上班人妻精品偷人| 昌江| 又大又硬又爽免费视频| 亚洲国产色一区二区三区|