日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

初学Sockets编程(一) 基本的TCP套接字

發布時間:2024/1/3 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 初学Sockets编程(一) 基本的TCP套接字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  前段時間剛開始學習《TCP/IP Sockets編程(C語言實現) (第2版)》一書,又被告知建議先去看一下《UNIX網絡編程(第一卷)》的部分內容會對理解其理論知識有所幫助,于是稍微停滯了一下。幾天前所練習的實例已經有所生疏,因此為了復習這部分內容(前面所提起的第一本書第2章),此文便作為復習筆記(書本關鍵內容摘錄),而以后各章節的學習也希望能做到及時總結和復習。

  本章示例的工作方式:客戶連接服務器并發送它的數據;服務器簡單地把它接收到的任何內容發送回客戶并斷開連接。


1.典型的TCP客戶的通信步驟

⑴使用socket()創建TCP套接字

  參數涉及地址族、使用的協議,正確創建返回一個句柄。

⑵使用connect()建立到達服務器的連接

  參數涉及套接字句柄、服務器的地址結構中的地址和端口標識,其中地址結構需要強制轉換為泛型類型。

⑶使用send()和recv()通信

  send()參數涉及套接字句柄、發送內容、發送長度;返回值為發送的字節數,錯誤返回為-1。

  recv()參數涉及套接字句柄、接收緩沖區、緩沖區大小、調用方式;返回值為接受的字節數,返回0表示另一端應用程序關閉了TCP連接,返回-1表示失敗。

⑷使用close()關閉連接


示例為之前提供的下載頁面的TCPEchoClient4.c。


2.基本的TCP服務器通信的常規步驟

⑴使用socket()創建TCP套接字

⑵利用bind()給套接字分配端口號

參數涉及套接字句柄、服務器的本機地址結構中的地址和端口標識,其中地址結構需要強制轉換為泛型類型,如果不是非常關心所在地址可以用inaddr_any。

⑶使用listen()告訴系統允許對該端口建立連接

  參數涉及套接字句柄、最大允許連接數。

⑷反復執行以下操作

調用accept()為每個客戶連接獲取新的套接字

  參數涉及之前的套接字句柄,創建成功后即將填寫的本機地址結構,該地址結構的長度,其中地址結構需要強制轉換為泛型類型,返回一個新套接字的句柄。

使用send()和recv()通過新的套接字與客戶通信
使用close()關閉客戶連接


示例為之前提供的下載頁面的TCPEchoServer4.c以及TCPServerUtility.c中的HandleTCPClient()。


3.指定地址

⑴通用地址

struct sockaddr {
  sa_family_t sa_family; //Address family (e.g.,AF_INET)
  char sa_data[14];
};  

⑵IPv4地址

struct in_addr {
  uint32_t s_addr;
};

  struct sockaddr_in {
  sa_family_t sin_family;  //Internet protocol (AF_INET)
  in_port_t sin_port;    //Address port   (16bits)
  struct in_addr sin_addr; //IPv4 address    (32bits)
  char sin_zero[8];    //Not used
};

  ⑶IPv6地址(已按照上一篇文章更改)

struct in_addr {
  uint8_t s_addr[16];//Internet address(128bits)
};
struct sockaddr_in6 {
  sa_family_t sin6_family;  //Internet protocol(AF_INET6)
  in_port_t sin6_port;    //Address port(16bits)
  uint32_t sin6_flowinfo;  //Flow information
  struct in6_addr sin6_addr;//IPv6 address (128bits)
  uint32_t sin6_scope_id;  //Scope identifier
};

  ⑷地址轉換

int inet_pton(int addressFamily, constchar*src , void*dst)
//把地址從可打印的字符串(*src)轉換為數字(dst引用的地址)

constchar*inet_ntop(int addressFamily, constvoid*src, char*dst,socklen_t dstBytes)
//把地址從數字轉化為可打印的形式

  ⑸獲取套接字的關聯地址

int getpeername(int socket, struct sockaddr *remoteAddress, socklen_t (addressLength)
int getsockname(int socket, struct sockaddr (localAddress, socklen_t (addressLength)

  4.其他

  為了便于在同一臺計算機的終端上進行調試,需要先在后臺執行服務器程序(參數等所有內容的最后面加一個&),再執行客戶機程序,發送到127.0.0.1即可。相關調試時用到的進程操作還有ps(查看當前運行進程)、kill(關閉進程)。


作者:五岳

出處:http://www.cnblogs.com/wuyuegb2312

對于標題未標注為“轉載”的文章均為原創,其版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

 

總結

以上是生活随笔為你收集整理的初学Sockets编程(一) 基本的TCP套接字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久精品在线 | 一区二区三区久久 | 中文黄色片 | 亚洲精品久久久久久宅男 | 捆绑少妇玩各种sm调教 | 国产一区日韩精品 | 一区二区在线视频 | 高清欧美性猛交xxxx黑人猛交 | 老熟妇一区二区三区啪啪 | 中文字幕第一页在线播放 | 老熟妇高潮一区二区三区 | 亚洲tv在线观看 | 久久无码人妻一区二区三区 | 国产一区二区三区播放 | 亚洲欧美一区二区三区久久 | 艳妇乳肉豪妇荡乳av | 女人18毛片毛片毛片毛片区二 | 国产swag在线| 奇米777视频 | 中文字幕狠狠干 | xxxx在线播放| 免费成人av在线播放 | 日本资源在线 | 三级在线免费 | 看一级黄色片 | 黄色国产在线播放 | 激情内射人妻1区2区3区 | 高清久久久久久 | 又粗又大又硬毛片免费看 | 亚洲女人天堂成人av在线 | 超碰一区二区 | 日本污视频在线观看 | 亚洲爽爆av| 黄色av网址在线观看 | 欧美日韩人妻精品一区二区 | 精品久久久久久久中文字幕 | 末发成年娇小性xxxxx | 制服.丝袜.亚洲.中文.综合懂 | 极品三级 | 国产好片无限资源 | 日本欧美不卡 | 狠狠婷婷 | 久久久久99精品成人片我成大片 | 97福利| 婷婷综合另类小说色区 | 中文字幕黄色 | 欧美成人aaaa| 中文字幕一区二区久久人妻 | 黄色在线免费网站 | 2019中文字幕在线免费观看 | 伊人手机视频 | 国产成人亚洲精品无码h在线 | 屁股夹体温计调教play | 精品人伦一区二区三区蜜桃网站 | 欧美大片在线免费观看 | 国产h视频在线 | www国产精品内射老熟女 | 国产另类专区 | 国产精品果冻传媒 | 韩国一级片在线观看 | 国产精品天美传媒 | 久久久久中文字幕 | 茄子视频色 | 国产精品一区二区无码免费看片 | 痴汉电车在线播放 | 国产成人av一区二区三区 | 免费观看黄色网页 | 国产91在线免费观看 | aaaaa黄色片 天堂网在线观看 | 欧美少妇xxx | 狠狠干狠狠操视频 | 爱爱爱爱网 | 国产精品视频成人 | wwwxxoo| 亚洲第二色 | 国产精品美女久久久 | 91视频在线观看 | 色天使在线视频 | 手机版av | 黄色精品视频在线观看 | 麻豆精品国产传媒mv男同 | 少妇一晚三次一区二区三区 | 超碰在线网站 | 亚洲成熟丰满熟妇高潮xxxxx | 国产靠逼视频 | 免费看大片a | 精东av在线 | 欧美色图88 | 91婷婷色 | 曰批免费视频播放免费 | 丰满少妇aaaaaa爰片毛片 | 日本成人激情 | 亚洲区久久 | 亚洲欧美日韩激情 | 黄色欧美大片 | 天堂素人 | 青青草国产一区二区三区 | 91高潮大合集爽到抽搐 | 在线观看av中文字幕 |