TCP協議(三)之Windows實現

2022-03-26 03:12:56 字數 2038 閱讀 3741

tcp 程式設計一般的步驟:

server(服務端)

1.new 個 socket

2.bind (ip,port)

3.listen,等待客戶端的連線

4.accept 接受客戶端的連線

5.接收(recv) 傳送資料(send)

6.關閉連線

client(客戶端)

1.new 個 socket

2.bind(ip,port)

3.connect (server.ip,server,port)

4.recv() /send()

5.關閉連線

伺服器程式

#include #include #include #pragma comment(lib,"ws2_32.lib ")

int main()

/* 設定ip位址 */

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_addr.s_addr = htonl(inaddr_any); //繫結本機ip

= inet_addr("192.168.1.53");

/* 設定埠 */

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(3000); //埠為3000

/* 建立套接服務字 */

socket serversocket;

serversocket = socket(af_inet, sock_stream, 0);

if (serversocket == invalid_socket)

/* 繫結伺服器套接字 */

if (bind(serversocket, (sockaddr*)&servaddr, sizeof(sockaddr)) == socket_error)

/* 監聽埠 */

if (listen(serversocket, 20) == socket_error)

printf("linstening:%dport...\n", ntohs(servaddr.sin_port));

/* 阻塞方式等待accept */

int len = sizeof(cliaddr);

socket clientsocket;

clientsocket = accept(serversocket, (sockaddr*)&cliaddr, &len);

printf("connected:%s \r\n", inet_ntoa(cliaddr.sin_addr));

/* 接受訊息 */

char recvbuf[100] = ;

recv(clientsocket, recvbuf, sizeof(recvbuf), 0);

/* 傳送訊息 */

send(clientsocket, recvbuf, 100, null);

closesocket(clientsocket);

wsacleanup();

system("pause");

return 1;

}

客戶端**

#include "stdlib.h"

#include #include #pragma comment(lib, "ws2_32.lib") //載入 ws2_32.dll

int main()

printf("成功連線到伺服器!\n");

char sendbuf[100] = ;

send(sock, sendbuf, 100, null);

char recvbuf[100] = ;

recv(sock, recvbuf, 100, 0);

closesocket(sock);

wsacleanup();

for (int i = 0; i < 12; i++)

system("pause");

return 1;

}

TCP協議詳解(三)

首先我們來回顧下我們以前了解過的,tcp頭部結構有6個標識位 以上就是我們講到以下內容的時候需要用到的知識點 開始介紹一下三次握手的過程 三次握手建立後,客戶端與伺服器開始傳送資料。三次握手示意圖 接下來,我們來介紹下四次握手關閉 四次握手示意圖 在tcp詳解 二 中,提到過,當客戶端收到伺服器的結...

詳解TCP協議(三)

五 流量控制 視窗大小不能無限大,傳輸速率太快,接收方可能處理不過來,根據接收方的處理能力來反向制衡傳送方的傳送速率 視窗大小 六 擁塞控制 和流量控制共同決定傳送方的視窗大小的 考慮網路傳輸路徑上的擁堵程度 動態變化的 七 延時應答 為了提高效率,在流量控制的基礎上,盡量返回乙個合理的但是又比較大...

網路協議之TCP

為了實現計算機的通訊,我們為計算機定義了一系列的通訊規則,這些規則就是協議.資料格式封裝 傳輸 將複雜的流程分解為幾個功能相對單一的子程序。osi是乙個理想的模型,因此一般網路系統只涉及其中的幾層,很少有系統能夠具有所有的7層,並完全遵循它的規定。在7層模型中,每一層都提供乙個特殊的網路功能。從網路...