日韩性视频-久久久蜜桃-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套接字的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美亚一区二区三区 | 寂寞午夜影院 | 精品人妻人人做人人爽 | 国产一区二区在线播放视频 | 成人毛片18女人毛片免费 | 超碰激情在线 | 校园sm主奴调教1v1罚视频 | 成人激情av | 日韩高清专区 | 青青草91 | 天天久久综合网 | 国产精品国产三级国产aⅴ浪潮 | 日韩精品一区二区不卡 | 欧美久久天堂 | 秘密爱大尺度做爰呻吟 | 女人被男人躁得好爽免费视频 | 亚洲精品国产成人无码 | 痴女扩张宫交脱垂重口小说 | 国产 第1190页 | 丰满岳乱妇一区二区三区 | 在线成人日韩 | 青青草97国产精品免费观看 | 欧美日韩色综合 | 成人动漫视频 | 午夜尤物| 免费av观看网站 | 成人狠狠干 | 美女露出粉嫩尿囗让男人桶 | 日韩激情中文字幕 | 人超碰| 亚洲在线观看视频 | 99热网| 国产亚洲精品久久久久久久久动漫 | 国产亚洲精品一区二区三区 | 国产精品一区二区av | 一级黄色录相 | 天天狠狠 | 一级国产黄色片 | 日韩精品免费一区 | 在线成人播放 | 日韩成人高清视频在线观看 | 超碰中文字幕 | 中国农村一级片 | 亚洲一二三区av | 四虎影视永久 | 日韩三级在线 | 波多野结衣在线 | 久久久蜜桃 | 亚洲精品久久久久avwww潮水 | 精品日韩久久 | 欧美国产专区 | 亚洲第一区在线 | 亚洲影院在线播放 | 少妇一级淫免费观看 | 日韩毛片在线视频 | 日本免费在线视频观看 | 日本福利一区二区三区 | 免费看一级黄色大全 | 人人入人人| 欧美一区二区三区久久精品 | 欧美少妇精品 | 国产一区二区三区在线视频 | 人妻夜夜爽天天爽三区麻豆av网站 | 少妇高潮一区二区三区69 | 91久久免费| 中文字幕一区二区三三 | 男人的天堂网av | 中国一及毛片 | 日日夜夜欧美 | 久久久久91| 逼逼av网站| 中文字幕自拍偷拍 | 丁香综合激情 | 中文字幕在线2018 | 免费操人视频 | av资源站最新av | 日韩一区二区av | 色噜噜狠狠一区二区三区果冻 | 国产一区二区三区在线视频观看 | 美女中文字幕 | 成年人在线视频网站 | 亚洲美女视频在线观看 | 午夜剧场黄色 | 大胸喷奶水www视频妖精网站 | 天堂资源最新在线 | 天天摸天天插 | 91精品在线一区 | 成人免费毛片网站 | 永久免费成人 | 特级淫片裸体免费看冫 | 久久久久久免费观看 | 91在线观看免费高清完整版在线观看 | 国产麻豆剧果冻传媒白晶晶 | 亚洲精品乱码久久久久99 | 中国a毛片| 超碰日韩在线 | 国产91精品一区二区 | 97人妻人人揉人人躁人人 | 一级全黄裸体免费观看视频 |