国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網(wǎng)站建設(shè)測試流程圖友情鏈接如何添加

網(wǎng)站建設(shè)測試流程圖,友情鏈接如何添加,網(wǎng)站建設(shè)從零開始教程,深圳做營銷網(wǎng)站公司簡介網(wǎng)絡(luò)編程 Day2 套接字socket基于TCP通信的流程服務(wù)器端客戶端TCP通信API 基于UDP通信的流程服務(wù)器端客戶端 作業(yè) 套接字socket socket套接字本質(zhì)是一個特殊的文件,在原始的Linux中,它和管道,消息隊列,共享內(nèi)存,信號等…

網(wǎng)絡(luò)編程 Day2

  • 套接字socket
  • 基于TCP通信的流程
    • 服務(wù)器端
    • 客戶端
    • TCP通信API
  • 基于UDP通信的流程
    • 服務(wù)器端
    • 客戶端
  • 作業(yè)

套接字socket

  1. socket套接字本質(zhì)是一個特殊的文件,在原始的Linux中,它和管道,消息隊列,共享內(nèi)存,信號等一樣,都只能進行主機內(nèi)的通信
  2. 隨著歷史的發(fā)展,有了TCP/IP協(xié)議族的出現(xiàn),使得socket套接字可以通過網(wǎng)卡,與外部主機進行通信
  3. socket函數(shù)會生成一個文件描述符,不同主機內(nèi)的進程都可以對該文件描述符進程讀寫

在這里插入圖片描述

基于TCP通信的流程

在這里插入圖片描述

服務(wù)器端

  1. socket:創(chuàng)建原始套接字
  2. bind:將原始套接字與主機IP綁定(該服務(wù)器的身份,服務(wù)器以主機的身份通信)
  3. listen:將原始套接字設(shè)置為監(jiān)聽狀態(tài)
  4. accept:接收客戶端的連接,獲取客戶端信息,并生成新的套接字描述符用于與客戶端通信。
  5. 發(fā)送信息,接收信息,關(guān)閉

客戶端

  1. socket:創(chuàng)建套接字
  2. bind(可選):客戶端綁定IP和端口號,綁定后客戶端將會使用綁定的IP端口號來訪問服務(wù)器,如果不綁定系統(tǒng)將會自動分配IP和端口號
  3. connect:向服務(wù)器發(fā)送連接請求
  4. 發(fā)送信息,接收信息,關(guān)閉

TCP通信API

#include <sys/types.h>          /* See NOTES */#include <sys/socket.h>int socket(int domain, int type, int protocol);功能:創(chuàng)建socket套接字描述符參數(shù)1:AF_UNIX,      AF_LOCAL:本地通信模式AF_INET        IPv4 通信AF_INET6       IPv6 通信參數(shù)2傳輸層通信協(xié)議:SOCK_STREAM:TCP通信協(xié)議SOCK_DGRAM:UDP通信協(xié)議參數(shù)3:如果參數(shù)2指定了TCP或者UDP具體通信協(xié)議,參數(shù)3可以省略,如果沒有指定需要加上參數(shù)3.返回值:成功返回套接字描述符,失敗返回-1,并置位錯誤碼。eg:socket(AF_INET,SOCK_STREAM,0)#include <sys/types.h>          /* See NOTES */#include <sys/socket.h>int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);參數(shù)1:套接字描述符參數(shù)2;struct sockaddr_in {sa_family_t    sin_family; /* IPV4通信協(xié)議 */in_port_t      sin_port;   /* 端口號 */struct in_addr sin_addr;   /* IP號(IP地址轉(zhuǎn)化的IP號) */};參數(shù)2結(jié)構(gòu)體第三個成員還是結(jié)構(gòu)體如下:struct in_addr {uint32_t       s_addr;     /* IP地址在網(wǎng)絡(luò)的形式 */};參數(shù)3:參數(shù)2的結(jié)構(gòu)體大小。返回值:成功返回0,失敗返回-1,并置位錯誤碼。#include <sys/types.h>          /* See NOTES */#include <sys/socket.h>int listen(int sockfd, int backlog);功能:監(jiān)聽客戶端連接請求參數(shù)1:套接字描述符參數(shù)2:監(jiān)聽的最大數(shù)量是128。返回值:成功返回0,失敗返回-1,并置位錯誤碼。#include <sys/types.h>          /* See NOTES */#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能:接收連接請求,并記錄連接者的信息(阻塞函數(shù))參數(shù)1:套接字描述符參數(shù)2:存儲連接者的詳細信息。參數(shù)3:參數(shù)2的大小。返回值:成功返回新的描述符,失敗返回-1,并置位錯誤碼。int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);功能:與服務(wù)器建立連接的函數(shù)參數(shù)1:套接字描述符參數(shù)2:需要連接的服務(wù)器具體信息(IP,端口號,通信域等)參數(shù)3:參數(shù)2的大小。返回值:成功返回0,失敗返回-1,并置位錯誤碼

基于UDP通信的流程

在這里插入圖片描述

服務(wù)器端

  1. 創(chuàng)建套接字
  2. 綁定主機IP和端口號
  3. 收發(fā)信息

客戶端

  1. 創(chuàng)建套接字
  2. 收發(fā)信息

作業(yè)

使用UDP和connect函數(shù)實現(xiàn)一對一通信

//服務(wù)器
#include <myhead.h>#define IP "192.168.209.241"
#define PORT 6666int main(int argc, const char *argv[])
{//創(chuàng)建UDP套接字int socketfd = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == socketfd){perror("socket");return -1;}//綁定struct sockaddr_in server = {.sin_family = AF_INET,.sin_port = htons(PORT),.sin_addr.s_addr = inet_addr(IP)};if (-1 == bind(socketfd, (struct sockaddr *)&server, sizeof(server))){perror("bind");return -1;}//收發(fā)信息struct sockaddr_in client;int client_len = sizeof(client);int flag = 1;char buff[1024] = "";while (1){//記錄首個發(fā)送信息的客戶端并連接while (flag){recvfrom(socketfd,buff,sizeof(buff),0,(struct sockaddr *)&client, &client_len);printf("收到來自%s:%d的信息:%s\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port), buff);if (-1 == connect(socketfd, (struct sockaddr *)&client, client_len)){perror("connect");return -1;}flag = 0;}strcat(buff,"copy");send(socketfd, buff, strlen(buff), 0);bzero(buff, sizeof(buff));recv(socketfd, buff, sizeof(buff), 0);printf("收到來自%s:%d的信息:%s\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port), buff);bzero(buff, sizeof(buff));}return 0;
}
//客戶端
#include <myhead.h>#define IP "192.168.209.241"
#define PORT 6666int main(int argc, const char *argv[])
{//創(chuàng)建UDP套接字int socketfd = socket(AF_INET, SOCK_DGRAM, 0);if (socketfd == -1){perror("socket");return -1;}//連接服務(wù)器struct sockaddr_in server = {.sin_family = AF_INET,.sin_port = htons(PORT),.sin_addr.s_addr = inet_addr(IP)};if (-1 == connect(socketfd, (struct sockaddr *)&server, sizeof(server))){perror("connect");return -1;}//收發(fā)信息,因為使用了connect連接了服務(wù)器,所以可以直接使用send和recv函數(shù)直接操作char buff[1024] = "";while (1){fgets(buff, sizeof(buff), stdin);buff[strlen(buff)-1] = '\0';
//		sendto(socketfd,buff,sizeof(buff),0,(struct sockaddr *)&server, sizeof(server));send(socketfd,buff, strlen(buff),0);bzero(buff,sizeof(buff));
//		recvfrom(socketfd,buff,sizeof(buff),0,NULL,NULL);recv(socketfd,buff, sizeof(buff), 0);printf("收到服務(wù)器信息:%s\n", buff);}return 0;
}
http://aloenet.com.cn/news/43723.html

相關(guān)文章:

  • 怎么增加網(wǎng)站的外鏈學(xué)校網(wǎng)站建設(shè)
  • 網(wǎng)站設(shè)計任務(wù)書范文站長工具seo綜合查詢訪問
  • 精通網(wǎng)站建設(shè) 全能建站密碼pdf理發(fā)美發(fā)培訓(xùn)學(xué)校
  • 公司網(wǎng)站制作推廣公司
  • 電子商務(wù)網(wǎng)站有哪幾種搜索引擎營銷的常見方式
  • 網(wǎng)站代理游戲合川網(wǎng)站建設(shè)
  • 蘇州專業(yè)高端網(wǎng)站建設(shè)公司專業(yè)制作網(wǎng)站的公司哪家好
  • 泰州網(wǎng)站建設(shè)服務(wù)熱線全網(wǎng)推廣軟件
  • 免費推廣網(wǎng)站2023mmm網(wǎng)絡(luò)營銷項目
  • 桐鄉(xiāng)住房和城鄉(xiāng)規(guī)劃建設(shè)局網(wǎng)站如何做網(wǎng)絡(luò)銷售產(chǎn)品
  • 上海網(wǎng)站設(shè)計工具網(wǎng)絡(luò)推廣運營團隊
  • 建設(shè)廳特種作業(yè)證件查詢官網(wǎng)網(wǎng)站優(yōu)化推廣公司
  • 重慶品牌網(wǎng)站建設(shè)優(yōu)化網(wǎng)站排名方法
  • 網(wǎng)站設(shè)計導(dǎo)航欄高度佛山市人民政府門戶網(wǎng)站
  • 網(wǎng)站建設(shè)詢價文件無錫營銷型網(wǎng)站制作
  • 海爾集團電商網(wǎng)站建設(shè)百度網(wǎng)頁版進入
  • 怎樣在國外網(wǎng)站做推廣搜索關(guān)鍵詞排名一般按照什么收費
  • 做網(wǎng)站做軟件怎么賺錢嗎搜索量最大的關(guān)鍵詞
  • 咸秧草做哪些網(wǎng)站優(yōu)化大師免安裝版
  • 鄭州做網(wǎng)站推廣外包產(chǎn)品推廣方式
  • 鞍山網(wǎng)站制作公司優(yōu)化綠松石什么意思
  • 泉州建設(shè)網(wǎng)站開發(fā)快速排名優(yōu)化
  • 湖南做網(wǎng)站磐石網(wǎng)絡(luò)案例cba最新排名
  • 淘寶的網(wǎng)站建設(shè)seo分析報告怎么寫
  • 網(wǎng)站如何提高權(quán)重做百度推廣怎么做才能有電話
  • 響應(yīng)式網(wǎng)站建設(shè)效果迅雷下載磁力天堂
  • 萬網(wǎng)個人網(wǎng)站備案查詢東莞今天的最新通知
  • 有關(guān)做聚合物電池公司的網(wǎng)站網(wǎng)站優(yōu)化外包推薦
  • 如何再國外網(wǎng)站做折扣什么是seo?
  • 中關(guān)村在線官方網(wǎng)站電腦首頁關(guān)鍵詞排名