伺服器端:
socket—bind—listen—accept—write/read—close
客戶端:
socket—connect—write/read—close
1、socket函式的用法
int
socket
(int domain,
int type,
int protocol)
;//返回值為socket套接字檔案描述符,用來監聽連線
/*domain:協議族
ipv4環境使用 af_inet
ipv6環境使用 af_inet6
type:指定socket型別
tcp使用socket_stream
udp使用socket_dgram
protocol:指定協議
預設使用0,系統為你自動安排合適的協議*/
int cfd =
socket
(af_inet, socket_stream,0)
;
2、bind函式的用法
int
bind
(int sockfd,
const
struct sockaddr* addr, socklen_t addrlen)
;//sockfd:socket檔案描述
//ipv4環境下
struct sockaddr_in
;struct in_addr
;//hons函式和htonl函式是將本地位元組序轉化為網路位元組序
//inaddr_any ,會自動獲取服務端的計算機ip位址,方便於多宿主計算機
struct sockaddr_in serv;
serv.sin_family = af_inet;
serv.sin_port =
htons
(port)
;//傳埠號
serv.sin_addr.s_addr =
htonl
(inaddr_any)
//傳位址
bind
(cfd,
(struct sockaddr*
)&serv,
sizeof
(serv)
);
3、listen函式的用法
int
listen
(int sockfd,
int backlog)
;//backlog:可以排隊的最大連線數
4、accept函式的用法
int
accept
(int sockfd,
struct sockaddr* addr, socklen_t *addrlen)
;//返回乙個全新的套接字,該套接字用來通訊,傳送接收資料
//addr用來返回客戶端的連線位址,為傳出引數
//addrlen返回協議位址的長度,為傳出引數
5、read、write函式
ssize_t read
(int fd,
void
*buf, size_t count)
;ssize_t write
(int fd,
const
void
*buf, size_t count)
;//返回值:實際寫入、讀出的位元組數(read函式返回0時表示讀到末尾,返回負數為出錯;write函式返回負數時表示出錯)
//buf:寫入、讀出的緩衝區
//count:期望寫入、讀出的位元組數
6、close函式
int
close
(int fd)
;
7、connect函式的用法:
int
connect
(int sockfd,
const
struct sockaddr* addr, socklen_t addrlen)
;//addr用來傳入目標伺服器的位址資訊
//addrlen為目標伺服器位址資訊的長度
Linux網路程式設計之廣播
1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...
Linux網路程式設計之廣播
1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...
linux網路程式設計之Socket
一.socket socket可看作是使用者程序與核心網路協議的程式設計介面.socket可用於本機程序間的通訊,也可用於網路上不同主機間的程序通訊.下圖顯示的是各種網路協議的位址格式 1.struct socketaddr 通用位址結構 通過獲取某種socketaddr結構體的首位址,不需要知道具...