前言
internet 協議集支援乙個無連線的傳輸協議,該協議稱為使用者資料報協議,一般用在廣播等地方,因為他不在意對方是否收到
udp:
客戶端:先接收資料,先執行
1>建立乙個socket套接字(呼叫socket函式,建立乙個網路描述符)
#include
#include
#include
#include
#include
int socket(int domain, int type, int protocol);
//如果成功,返回乙個可以使用的網路描述符,失敗返回-1,並且設定errno的值
引數1:位址協議族
af_unix //unix域
af_inet //ipv4協議 32位整型數
af_inet6 //ipv6協議 128位整型數
af_unix/af_local 表示單機程序程式
引數2:傳輸型別
sock_dgram //代表使用udp傳輸
sock_stream //代表使用tcp傳輸
sock_raw //一般用於unix域傳輸
引數3:協議//特殊要求
protocol 應用層協議型別,0 表示自動匹配;
//例子:
int sfd = socket(af_inet,sock_dgram,0);
2>繫結ip位址和埠號 192.168.1.10 8888
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
//為指定的網路描述符繫結乙個ip位址和埠號,成功返回0,失敗返回-1,設定errno
引數1:網路描述符
引數2:ip位址結構體指標//原始結構體ip和port混合,使用不方便,所以不用
struct sockaddr_in
; /*ip位址結構體*/
struct in_addr
;
//例子:
struct sockaddr_in ip;
ip.sin_family = af_inet;
ip.sin_port = htons(8888);
ip.sin_addr.s_addr = inet_addr(「192.168.1.10」);
//inet_pton(af_inet,「0.0.0.0」,&ip.sin_addr.s_addr);
//如果位址填"0.0.0.0",則預設使用本機的ip位址
引數3:ip結構體長度
sizeof(ip)
通常我們在使用sockaddr_in 這個結構體的時候,我們需要對他進行型別轉化
例子: bind (sfd,(void*)ip,sizeof(ip));
3、傳送:sendto
ssize_t sendto(int sokfd, const void *buf, size_t len,
int flags, const struct sockaddr *dest_addr,
socklen_t addrlen);
功能:該函式可以從當前套接字中向目標主機傳送資料;
引數:sockfd 套接字值,一般是socket()的返回值
buf 要傳送的資料位址
len 要傳送的資料長度
flags 傳送方式,0 表示阻塞傳送
dest_addr 要傳送的目標位址結構體,不能為空;
addrlen 目標主機位址的長度。
返回值:成功 傳送的資料長度
失敗 -1;
例子:sendto(sfd,「hello」,6,0,&saddr,sizeof(saddr));
接收:recvfrom
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
功能:該函式將會在套接字上阻塞等待獲取資料;
引數:sockfd 套接字id
buff 本地儲存資料的位址
len 儲存資料的長度
flags 獲取資料的方式,0 阻塞
src_addr 資料中源主機的位址資訊結構體,如果不關心傳送端
用null表示;
addrlen 位址長度的指標
返回值:成功 獲取資料的長度
失敗 -1;
4>關閉網路描述符
close(sfd);
伺服器:先傳送資料,後執行
1>建立乙個socket套接字(呼叫socket函式,建立乙個網路描述符)
2>繫結ip位址和埠號(可以省略繫結) 192.168.1.10 8888
3>收發資料
4>關閉網路描述符
H 通過按鈕來新增乙個選項卡
方法如下 說明 參照框架的contabs.js 進行方法修改,由於是在iframe層操作按鈕,所以只需要在原有的基礎上加上window.parent.document 去獲取相應的物件即可實現。新增選項卡 function createmenuitem dataurl,menuname flag f...
jquery 學習,乙個乙個來
1.document ready function 與window.nl ad function 的區別 前者為建立完畢dom就執行,可以新增多次.可以用 window load 來實現後者.也可以這樣jquery function 後者為建立完畢並載入完畢才執行,寫多個時後寫的會沖掉先寫的,只能執...
乙個socket原始碼
vc編寫伺服器 式的聊天室 2009 9 11 本文參考了 visual c 6.0完全自學手冊 中的示例 一 流程說明 客戶端客戶端建立流式套接字 呼叫connection向伺服器傳送連線請求 連線成功後使用建立與之關聯的的csocketfile物件和carchive物件 使用carchive物件...