socket网络编程流程
服務器端編程的步驟:
1:創建套接字 int socket(int domain,int type,int protocol);
? ? domain告訴系統使用哪個底層協議組,PF_INET或者PF_INET6,對于本地域協議設置為PF_UNIX;
? type指定服務類型,流式SOCK_STREAM,數據報SOCK_DGRAM;
protocol一般設置為0
成功返回一個文件描述符,失敗返回-1
2:命名套接字 ,綁定套接字到一個IP地址和一個端口上? int bind(int sockfd,const struct sockaddr*my_addr,socklen_t addrlen)
? bind將my_addr所指的地址分配給sockfd,第三個參數指出地址的長度,成功返回0,失敗返回-1
3:將套接字設置為監聽模式等待連接請求 int listen(int sockfd,int backlog);
? backlog指定內核已完成三次握手連接的socket隊列最大長度,如果超過backlog,服務器不再處理新的客戶連接
??
4:請求到來后,接受連接請求,返回一個新的對應于此次連接的套接字?
? ?int accept(int socket,struct sockaddr *addr,socklen_t *addrlen)
第二個參數用來獲取被接受連接的遠端socket地址,地址長度由第三個參數指出,成功返回一個新的連接套接字
只負責從監聽隊列取出套接字,而不論連接處于何種狀態,也不關心網絡狀況
5:用返回的套接字和客戶端進行通信(send()/recv());
6:返回,等待另一連接請求;
7:關閉套接字close
客戶端編程的步驟:
1:創建套接字socket()
2:向服務器發出連接請求(connect());
? int connect(int sockfd,const struct sockaddr *serv_addr,socklen_t addrlen)
? 第二個參數是服務器監聽的socket地址
3:和服務器端進行通信(send()/recv());
4:關閉套接字,關閉加載的套接字庫close
總結
以上是生活随笔為你收集整理的socket网络编程流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 写结构体到文件
- 下一篇: 玩转oracle 11g(35):rma