网站大量收购闲置独家精品文档,联系QQ:2885784924

C++网络socket编程指南.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C网络socket编程指南

Socket 使用Win32 API 一個網路通訊程式 什麼是Socket 凡是網路兩端互相連線傳送資料時的溝通介面就是 socket,是一個網路系統的通訊函式庫,在任何作 業系統中可以通用 主要的5大函式: socket() ? 電話 bind() ? 線路(第幾分機?) listen() ? 準備好接聽(啟用鈴聲) connect() ? 撥電話出去 accept() ? 對方接聽 Socket函式,指定通訊協定 socket ( )函式 int SOCKET socket( int af, int type, int protocol ); af :位址資料族系(family),用不同方式表示網路位址 type:通訊方式 Protocal:傳輸協定編號 回傳值:-1表示建立socket發生錯誤 若成功則回傳非負整數,稱為socket descriptor (socket描述子) 選項設定 af: 選擇AF_INET ? Internet address family 對應的網路位址資料格式是 unsigned long(無號長整數) type:SOCK_STREAM 虛擬路徑連接方式(TCP用) SOCK_DGRAM 資料包方傳遞式(UDP用) protocal: 選擇IPPROTO_TCP (TCP通訊協定) 或寫入0,交由系統設定 範例 SOCKET sock; //宣告 sock = socket( //設定 AF_INET, SOCK_STREAM, IPPROTO_TCP ); Bind函式,指定本地端位置 Bind()函式 int bind( SOCKET s, const struct sockaddr* name, int namelen ); s : 指定好通訊協定的socket name : 指定本地端位址,資料格式為sockaddr namelen : name之資料長度(單位byte) 回傳值:-1表錯誤,否則為0 Sockaddr_in 格式(IPv4用) struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; sin_family:位址資料族系,同樣設定為AF_INET sin_port:主機開啟的通訊埠號 用htons() 寫入 sin_addr:主機IP位址 in_addr資料格式 sin_zero[8]:目前沒用處,保留以後使用 in_addr格式 typedef struct in_addr { union { struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b; struct {u_short s_w1,s_w2;} S_un_w; u_long S_addr; } S_un; } in_addr; 使用了union的結構體,實際上的大小是一個32bit的長整數 所以只要注意u_long S_addr這個變數 將IP對此變數寫入便可 函式庫引入的標頭檔應該會有定義 #define s_addr S_un.s_addr 此後只要對前一頁之變數sin_addr.s_addr存取便可 寫入時使用inet_addr(“IP位址字串”)轉換成unsigned long 範例 SOCKET Sock; sockaddr_in saServer; Sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); // 設定本機通訊用的位址 saServer.sin_family = AF_INET; saServer.sin_port = htons(5150); //啟用5150 port saServer.sin_addr.s_addr = inet_addr(“140.115.65.30”); //設定本機IP // 呼叫Bind函式 bind(Sock,(SOCKADDR*) saServer, sizeof(saServer) ); Listen函式 設定socket等待外部連線 listen()是使Socket進入等待連線狀態,等待客戶端(Client) 連上線來,很顯然的呼叫此函式的主機,功能會是一台伺服器(Server)。 如果有Client想要連過來,此時可以呼叫connect()來跟Server 連線。而Se

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档