socket程式設計(二)

2021-08-02 17:49:57 字數 2000 閱讀 7876

標頭檔案:

功能:建立乙個套接字用於通訊

原型: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...