標頭檔案:
功能:建立乙個套接字用於通訊
原型:int socket(int domain, int type, int protocol);
引數:domain:指定通訊協議族(protocol family)
type:指定socket型別,流式套接字sock_stream,資料報套接字sock_dgram,原始套接字sock_raw
protocol:協議型別
返回值:成功返回非負整數,它與檔案描述符類似,我們把它稱為套介面描述字,簡稱套接字。失敗返回-1。
標頭檔案:
原型:int bind(int sockfd, const struct sockaddr* addr, soclen_taddrlen);
引數: sockfd:socket函式返回的套接字
主動套接字:發起連線connect
被動套接字:接受連線accept
標頭檔案:#include
功能:將套接字用於監聽進入的連線
原型:int listen(int sockfd, int backlog);
引數:sockfd:socket函式返回的套接字
backlog:規定核心為此套接字排隊的最大連線個數
返回值:成功返回0,失敗返回-1
一般來說,listen函式應該在呼叫socket和bind函式之後,呼叫函式accept之前呼叫。
對於給定的監聽套介面,核心要維護兩個佇列:
1. 已由客戶發出並到達伺服器,伺服器正在等待完成相應的tcp三路握手過程
2. 已完成連線的佇列
標頭檔案:
功能:從已完成連線佇列返回第乙個連線,如果已完成連線隊列為空,則阻塞。
原型:int accept(intsockfd, struct sockaddr* addr, socklen_t* addrlen);
引數:sockfd:伺服器套接字
標頭檔案:
功能:建立乙個連線至addr所指定的套接字
原型:int connect(int sockfd, const structsockaddr* addr, socklen_t addrlen);
引數:sockfd:未連線套接字
addrlen:第二個引數addr長度
返回值:成功返回0,失敗返回-1
echoserver.cpp
#include #include #include #include #include #include #include #include #include #define err_exit(m) \
do \
while(0)
int main ()
close(listenfd);
close(conn);
return 0;
}
echoclient.cpp
#include #include #include #include #include #include #include #include #include #define exit_****re 1
#define err_exit(m) \
do \
while(0)
int main () ;
char recvbuf[1024] = ;
while(fgets(sendbuf, sizeof(sendbuf), stdin) != null)
close(sock);
return 0;
}
Socket 程式設計(二)
首先,看主介面 點選鏈結按鈕,開始建立與服務端的連線 socket socket null private void btnstart click object sender,eventargs e catch exception ex 那麼我們再來看看這個recmsg方法 void recmsg ...
socket程式設計入門(二)
在動手編寫socket通訊程式之前,還需要補充一些可能用到的函式。本文列出這些函式。accept int accept int sockfd,struct sockaddr addr,socklen t addrlen 從已完成連線佇列返回第乙個連線,如果已完成連線隊列為空,則阻塞,失敗返回 1 s...
Socket程式設計入門 二
1.htons u short htons u short hostshort 功能 把乙個u short型別的值從主機位元組順序轉換為網路位元組順序 引數 乙個以主機位元組順序表示的16位數值 返回 網路位元組序表示的16位數值 2.htonl u long htonl u long hostlo...