socket編程進階之路

一、socket是什麼
二、socket編程API
2.1 建立:socket()
2.2 關閉:shutdown()、close(),二者區別詳見《unix環境高級編程》的《Network IPC: Sockets》章節
2.3 socket地址表示及地址轉換:htonl()、htons()、ntohl()、ntohs()、inet_ntop()、inet_pton()
2.4 DNS/host信息:getaddrinfo/freeaddrinfo()、getnameinfo()
2.5 數據交互:bind()、connect()、listen()、accept()、send/recv()、sendto/recvfrom()、sendmsg/recvmsg()
2.6 socket配置選項:setsockopt/getsockopt()
特別說明:
在阻塞模式下,connect()函數不會當即返回;尤爲在異常狀況下,須要幾十秒設置幾分鐘(超時)。
關於connect()超時或時間長的解決方式,推薦以下:
一個配置致使的HTTP(TCP)鏈接超時
不要在linux上啓用net.ipv4.tcp_tw_recycle參數

三、善用網絡診斷工具
netstat
tcpdump
traceroute
Wireshark
sysctlhtml

四、網絡知識
固然,使用上述工具就須要相應的網絡知識:
《計算機網絡》
linux

《TCP/IP詳解》三卷git

《Unix網絡編程》兩卷github

五、操做系統
Linux下網絡配置文件位於:
/proc/sys/net/編程

# ls /proc/sys/net/
core ipv4 ipv6 netfilter unix

特別說明:
sysctl命令配置網絡就是操做該目錄下的文件網絡

https://github.com/torvalds/linux/blob/master/Documentation/networking/ip-sysctl.txtsocket

六、實踐tcp

相關文章
相關標籤/搜索