需要重新拿起書本複習複習,所以就有了下面的博文,希望我能堅持學習,堅持努力。
tcp連線的建立總的來說就是乙個跟**系統類似的套路:
對於伺服器:
1. 建立乙個socket用於通訊(類似listenfd = socket(af_inet, sock_stream, 0))
2. 繫結乙個位址好讓別人能找到你
類似:
struct sockaddr_in servaddr;
/*連線型別*/
servaddr.sin_family = af_inet;
/*繫結任意位址*/
servaddr.sin_addr.s_addr = htonl(inaddr_any);
/*將埠從主機位元組序裝換成網路位元組序*/
servaddr.sin_port = htons(8888);
bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr))
3. 監聽,如同開啟**振鈴,這叫被動開啟
listen(listenfd, 10);
4. 等待連線
for(; ;)
對於客戶端:
1. 建立套接字,類似於伺服器,只是這個套接字是主動開啟套接字
sockfd =socket(af_inet, sock_stream, 0);
2. 連線伺服器
servaddr.sin_family = af_inet;
servaddr.port = htons(8888);
/*將點分十進位制的ip位址轉換成合適的格式後給sin_addr*/
inet_pton(af_inet, serverip, &servaddr.sin_addr);
connect(sockfd, (struct sockaddr_in)&servaddr, sizeof(servaddr));
write();
close(sockfd);
return
0;
建立和終止過程:
![tcp建立連線和關閉過程](
使用套接字建立連線 TCP
int socket int domain,int type,int protocol domain pf inet,pf inet6以及pf local等,表示什麼型別的套接字 type sock stream 表示位元組流,tcp sock dgram 表示資料報,udp sock raw 表示...
Tcp套接字連線 二
include include using namespace std pragma comment lib,ws2 32.lib intmain 檢查if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 建立tcp 套接字 socket so...
網路IPC 套接字之建立連線
如果處理的是面向連線的網路服務 sock stream或sock seqpacket 在開始交換資料以前,需要在請求服務的程序套接字 客戶端 和提供服務的程序套接字 伺服器 之間建立乙個連線。客戶端可以用connect建立乙個連線。include int connect int sockfd,con...