本篇文章給大家分享的是有關(guān)C#網(wǎng)絡編程代碼框架是最實用的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)公司技術(shù)團隊十余年來致力于為客戶提供成都網(wǎng)站建設、網(wǎng)站制作、品牌網(wǎng)站設計、成都全網(wǎng)營銷、搜索引擎SEO優(yōu)化等服務。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團隊,先后服務、推廣了成百上千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構(gòu)單位。
網(wǎng)絡編程基本流程:
1:Socket概念及原型函數(shù)
原義是“孔”或“插座”。作為BSD UNIX的進程通信機制。通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務。
函數(shù)原型:
int socket(int domain, int type, int protocol);
參數(shù)說明:
domain:協(xié)議域,又稱協(xié)議族(family)。常用的協(xié)議族有AF_INET、AF_INET6、AF_LOCAL(或稱AF_UNIX,Unix域Socket)、AF_ROUTE等。協(xié)議族決定了socket的地址類型,在通信中必須采用對應的地址,如AF_INET決定了要用ipv4地址(32位的)與端口號(16位的)的組合、AF_UNIX決定了要用一個絕對路徑名作為地址。type:指定Socket類型。常用的socket類型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。流式Socket(SOCK_STREAM)是一種面向連接的Socket,針對于面向連接的TCP服務應用。數(shù)據(jù)報式Socket(SOCK_DGRAM)是一種無連接的Socket,對應于無連接的UDP服務應用。protocol:指定協(xié)議。常用協(xié)議有IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,分別對應TCP傳輸協(xié)議、UDP傳輸協(xié)議、STCP傳輸協(xié)議、TIPC傳輸協(xié)議。
注意:type和protocol不可以隨意組合,如SOCK_STREAM不可以跟IPPROTO_UDP組合。當?shù)谌齻€參數(shù)為0時,會自動選擇第二個參數(shù)類型對應的默認協(xié)議。
返回值:
如果調(diào)用成功就返回新創(chuàng)建的套接字的描述符,如果失敗就返回INVALID_SOCKET(Linux下失敗返回-1)。套接字描述符是一個整數(shù)類型的值。每個進程的進程空間里都有一個套接字描述符表,該表中存放著套接字描述符和套接字數(shù)據(jù)結(jié)構(gòu)的對應關(guān)系。該表中有一個字段存放新創(chuàng)建的套接字的描述符,另一個字段存放套接字數(shù)據(jù)結(jié)構(gòu)的地址,因此根據(jù)套接字描述符就可以找到其對應的套接字數(shù)據(jù)結(jié)構(gòu)。每個進程在自己的進程空間里都有一個套接字描述符表但是套接字數(shù)據(jù)結(jié)構(gòu)都是在操作系統(tǒng)的內(nèi)核緩沖里。
2:BIND(綁定)函數(shù)原型: int bind(SOCKET socket, const struct sockaddr* address, socklen_t address_len); 參數(shù)說明:socket:是一個套接字描述符。address:是一個sockaddr結(jié)構(gòu)指針,該結(jié)構(gòu)中包含了要結(jié)合本機的地址和端口號。address_len:確定address緩沖區(qū)的長度。 返回值: 如果函數(shù)執(zhí)行成功,返回值為0,否則為SOCKET_ERROR。
3:整個客戶端和服務器端交互圖4:Accept方法
5:C#中一個簡單的實例
服務器端:
以上就是C#網(wǎng)絡編程代碼框架是最實用的,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。