国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 網管 > 服務器 > 正文

TCP編程函數和步驟詳解

2020-05-27 13:08:13
字體:
來源:轉載
供稿:網友

   TCP編程的服務器端一般步驟是

  1、 創建一個socket,用函數socket();

  2、 設置socket屬性,用函數setsockopt(); * 可選

  3、 綁定IP地址、端口等信息到socket上,用函數bind();

  4、 開啟監聽,用函數listen();

  5、 接收客戶端上來的連接,用函數accept();

  6、 收發數據,用函數send()和recv(),者read()和write();

  7、 關閉網絡連接;

  8、 關閉監聽;

  TCP編程的客戶端一般步驟是:

  1、 創建一個socket,用函數socket();

  2、 設置socket屬性,用函數setsockopt();* 可選

  3、 綁定IP地址、端口等信息到socket上,用函數bind();* 可選

  4、 設置要連接的對方的IP地址和端口等屬性;

  5、 連接服務器,用函數connect();

  6、 收發數據,用函數send()和recv(),或者read()和write();

  7、 關閉網絡連接;

  UDP編程的服務器端一般步驟是:

  1、 創建一個socket,用函數socket();

  2、 設置socket屬性,用函數setsockopt();* 可選

  3、 綁定IP地址、端口等信息到socket上,用函數bind()

  4、 循環接收數據,用函數recvfrom();

  5、 關閉網絡連接;

  UDP編程的客戶端一般步驟是:

  1、 創建一個socket,用函數socket();

  2、 設置socket屬性,用函數setsockopt();* 可選

  3、 綁定IP地址、端口等信息到socket上,用函數bind();* 可選

  4、 設置對方的IP地址和端口等屬性;

  5、 發送數據,用函數sendto();

  6、 關閉網絡連接;

  常用的網絡命令:

  netstat

  命令netstat是用來顯示網絡的連接,路由表和接口統計等網絡的信息.netstat有許多的選項我們常用的選項是 -an 用來顯示詳細的網絡狀態.至于其它的選項我們可以使用幫助

  telnet

  telnet是一個用來遠程控制的程序,但是我們完全可以用這個程序來調試我們的服務端程序的. 比如我們的服務器程序在監聽8888端口,我們可以用telnet localhost 8888來查看服務端的狀況

  數據結構

  1、地址結構

  struct sockaddr_in {

  short int sin_family; /* 地址族 一般為AF-INET */

  unsigned short int sin_port; /* 端口號 */

  struct in_addr sin_addr; /* IP地址 */

  unsigned char sin_zero[8]; /* 填充0 以保持與struct sockaddr同樣大小 使用memset()或bzero()來填充*/

  };

  struct sockaddr {

  unsigned short sa_family; /* 地址族, AF_xxx */

  char sa_data[14]; /* 14 字節的協議地址 */

  };

  2、DNS結構

  struct hostent {

  char *h_name; /* 主機的官方域名 */

  char **h_aliases; /* 一個以NULL結尾的主機別名數組 */

  int h_addrtype; /* 返回的地址類型,在Internet環境下為AF-INET */

  int h_length; /*地址的字節長度 */

  char **h_addr_list; /* 一個以0結尾的數組,包含該主機的所有地址*/

  };

  操作函數

  1、 socket:

  創建socket 描述符

  int socket(int domain, int type, int protocol);

  domain=AF_INET,socket的類型,type=SOCK_STREAM 或SOCK_DGRAM,分別表示TCP連接和UDP連接;protocol=0。

  返回一個整型socket描述符。

  2.bind:

  將socket描述符與你本機上的一個端口相關聯(僅用于服務器)

  int bind(int sockfd,struct sockaddr *my_addr, int addrlen);

  Sockfd是一個socket描述符

  my_addr是一個指向包含有本機IP地址及端口號等信息的sockaddr類型的指針;

  addrlen=sizeof(struct sockaddr)。

  返回:成功=0;失敗=-1,errno=錯誤號。

  可以用下面的賦值自動獲得本機IP地址和隨機獲取一個沒有被占用的端口號:

  my_addr.sin_port = 0; /* 系統隨機選擇一個未被使用的端口號 */

  my_addr.sin_addr.s_addr = INADDR_ANY; /* 填入本機IP地址 */

  3.Connect:

  與遠端服務器建立一個TCP連接 (用于客戶端)

  int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

  Sockfd是目的服務器的sockt描述符

  serv_addr是包含目的機IP地址和端口號的指針。

  返回:成功=0;失敗=-1,errno=錯誤號。

  4、Listen:

  監聽是否有服務請求 ,用于bind()后

  int listen(int sockfd, int backlog);

  Sockfd是Socket系統調用返回的socket 描述符;

  backlog指定在請求隊列中允許的最大請求數,缺省值為20。

  返回:成功=0;失敗=-1,errno=錯誤號。

  5.accept:

  接受來自客戶的請求

  int accept(int sockfd, void *addr, int *addrlen);

  sockfd是被監聽的socket描述符,

  addr 是指向sockaddr_in變量的指針,存放客戶主機的信息 ;

  addrten 指向值為sizeof(struct sockaddr_in)的整型指針變量。

  返回:成功返回一個新的socket描述符,來供這個新連接來使用。 錯誤發生時返回一個-1并且設置相應的errno值。

  6.Send:

  在連接(TCP)的socket方式下發送信息

  int send(int sockfd, const void *msg, int len, int flags);

  Sockfd是用來傳輸數據的socket描述符

  msg是一個指向要發送數據的指針。

  Len是以字節為單位的數據的長度。

  flags一般情況下置為0。

  7.recv:

  在連接(TCP)的socket方式下接收數據

  int recv(int sockfd,void *buf,int len,unsigned int flags);

  Sockfd是接受數據的socket描述符;

  buf 是存放接收數據的緩沖區;

  len是緩沖的長度。

  Flags也被置為0。

  返回:實際上接收的字節數,如果連接中止,返回0,。出現錯誤時,返回-1并置相應的errno值。

  8.sendto:

  在在無連接(UDP)的socket方式下發送數據

  int sendto(int sockfd, const void *msg,int len,unsigned int flags,const struct sockaddr *to, int tolen);

  to表示目地機的IP地址和端口號信息

  tolen=sizeof (struct sockaddr)。

  返回:實際發送的數據字節長度或在出現發送錯誤時返回-1。

  9.Recvfrom()

  在無連接(UDP)的socket方式下接收數據

  int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,int *fromlen);

  from 保存源機的IP地址及端口號。

  fromlen=sizeof(struct sockaddr)。

  返回:實際存入from中的數據字節數。當出現錯誤時返回-1,并置相應的errno。

  10.close()

  釋放socket,停止任何數據操作

  close(sockfd);

  11.shutdown:

  單向關閉連接

  int shutdown(int sockfd,int how);

  how可以設為下列值:

  ·0-------不允許繼續接收數據

  ·1-------不允許繼續發送數據

  ·2-------不允許繼續發送和接收數據,均為允許則調用close ()

  shutdown在操作成功時返回0,在出現錯誤時返回-1(并置相應errno)。

  12. gethostbyname:

  域名和IP地址的轉換

  struct hostent *gethostbyname(const char *name);

  13.inet_pton函數:

  將點分十進制串轉換成網絡字節序二進制值,此函數對IPv4地址和IPv6地址都能處理。

  int inet_pton(int family,const char * strptr,void * addrptr);

  第一個參數可以是AF_INET或AF_INET6:第二個參數是一個指向點分十進制串的指針:第三個參數是一個指向轉換后的網絡字節序的二進制值的指針。

  返回:1---成功   0---輸入不是有效的表達格式   -1---失敗

  14.inet_ntop函數:

  和inet_pton函數正好相反,inet_ntop函數是將網絡字節序二進制值轉換成點分十進制串。

  const char * inet_ntop(int family,const void * addrptr,char * strptr,size_t len);

  第一個參數可以是AF_INET或AF_INET6:第二個參數是一個指向網絡字節序的二進制值的指針;第三個參數是一個指向轉換后的點分十進制串的指針;第四個參數是目標的大小,以免函數溢出其調用者的緩沖區。

  返回:指向結果的指針---成功   NULL---失敗

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产素人视频在线观看| 国产精品久久久久久久久鸭| 国产精品作爱| 日本中文字幕在线播放| 成人av小说网| 最新亚洲精品国自产在线观看| 在线中文字幕观看| www.毛片| 最近中文字幕av免费高清| 国产精品欧美色图| 四虎影视成人永久免费观看视频| av网站在线播放| 丁香在线视频| 在线中文视频| 中文字幕人成高视频| av超碰在线| 国产素人视频在线观看| www.成人.com| 精灵使的剑舞无删减版在线观看| 日日夜夜中文字幕| 国产xxx在线| 毛片视频免费观看| 2018中文字幕在线| 国产在线观看91| 国产激情网址| 麻豆国产在线视频| 国产三级在线观看| 蜜桃av在线免费观看| 99在线播放| 国产小视频在线| 狠狠操五月天| 青青草视频免费在线观看| 国产黄色片大全| 国产中文在线观看| 牛牛精品视频在线| 亚洲激情丁香| 国产无套粉嫩白浆在线2022年 | 国产在线麻豆精品| 亚洲第一区视频| 中文字幕av在线| 99在线欧洲视频| 99在线播放| av在线官网| 超碰在线97国产| 超碰在线中文| 国产鲁鲁视频在线观看免费| 在线观看的av网站| 国产www网站| 精品国产一区二区三区不卡在线| 国产麻豆视频免费观看| 久久久久久日本一区99| 福利视频网站导航| 国产理论在线观看| 国产变态拳头交视频一区二区| 69久久久久| av网址在线看| 麻豆av在线| 中文字幕在线免费视频| 国产精品99爱免费视频| 中文乱码字幕高清在线观看| www.大网伊人| 青青草在线免费观看| 欧美精品小视频| 国产视频福利在线| 亚洲人av在线| 国产精品亚洲第五区在线| 国产叼嘿网站免费观看不用充会员| 国产视频资源| gogo在线观看| 国产午夜三区视频在线| 亚洲视频在线观看不卡| 国产专区在线播放| 国产二区视频| 久草在线视频网| 国产精品久久在线| 免费看黄视频网站| 国产精品第八页| 日本成人a视频| 国产无遮挡又黄又爽免费网站| 在线三级av| 国产亚洲精品久久久久久移动网络 | 日韩av成人| 一区二区三区免费视频网站| 国产在线高清理伦片a| 91亚洲欧美| 国产69久久| 久久国产热视频| 四虎成人欧美精品在永久在线| 国产午夜在线| 中文字幕国产在线| 黄色片av在线| 欧美高清xxxx性| 日本成人a视频| 麻豆精品永久免费视频| 日本一二三区视频免费高清| 精品视频麻豆入口| 91av福利| 精精国产xxxx视频在线中文版 | 天堂在线看视频| 久久香蕉av| 国产在线二区| 国产嫩草在线视频| 欧洲一区av| 欧美成人亚洲高清在线观看| 欧美96在线| 狠狠操视频网站| 懂色一区二区三区| 午夜在线小视频| 91嫩草在线播放| 国产区av在线| 国产成人精品综合网站| 影音先锋中文字幕在线| 超碰97国产精品人人cao| 黄色国产网站在线观看| 国产香蕉在线| 伊人免费视频| 老司机精品视频一区二区| 国产农村av| 91久久麻豆| 免费三级毛片| 资源视频在线播放免费| 国产精品美女一区二区三区四区 | 国产黄色免费网| 国产黄色小视频| 亚洲一本大道| 国产女呦网站| 福利视频在线看| 97在线超碰| 国产精品一品| 中文在线视频| 国产女王在线**视频| 激情五月色综合亚洲小说| 国产三级视频在线看| 伊人资源视频在线| 高清色视频在线观看| 夜色资源网av在先锋网站观看| 欧美日韩**字幕一区| 国产女王在线**视频 | 精品一区二区三区在线成人| 影音先锋日韩| 国产一区久久精品| 麻豆福利在线观看| 99久久99热久久精品免费看| 国产午夜在线视频| 国产在线第一页| 欧美卡一卡二| 亚洲视频在线观看不卡| 国产精品入口麻豆完整版| av天天在线| 影音先锋在线中文字幕| 69视频在线| 国产成人va亚洲电影| 国产精品入口麻豆免费看| 国产美女在线观看| 欧美日韩在线视频免费观看| av一本在线| 亚洲成人国产综合| 精品女厕厕露p撒尿| 国产二区三区四区| 国产h在线观看| 国产激情视频一区二区| 国产精品入口麻豆免费看| 国产桃色电影在线播放| 狠狠干天天爱| 中文字幕麻豆| 精品无人区乱码1区2区3区免费| 国产国产人免费人成免费视频| 国产网站av| 2019中文字幕在线电影免费| 国产98在线| 亚洲91av| 国产美女高潮| 精品街拍一区二区| www.久草.com| 最近免费中文字幕大全免费第三页 | 国产精品一卡二卡三卡| 国产毛片在线| 2021天堂中文幕一二区在线观| 国产精品久久久久一区二区国产 | 97最新国自产拍视频在线完整在线看| 中文字幕2019第三页| 日本国产在线| 国产丝袜自拍| 不卡av免费观看| 国产无遮挡在线视频免费观看| 2018狠狠干| 国产美女在线一区二区三区| 精品一区二区三区高清免费不卡| 97国产视频| 狠狠干在线视频| 在线观看中文| 最新av中文字幕| 天天干天天操天天爽| 国产乱精品一区二区三区| 尤物视频在线观看视频| 国产免费专区| 欧美日韩久久中文字幕| 97影院秋霞午夜在线观看| 天天操人人干| 青青久在线视频免费观看|