TCP協議傳輸過程

2021-10-24 21:40:29 字數 3023 閱讀 4240

//引入動態套接字的庫檔案

#include

#include

#include

void

main()

if((listensocket =

socket

(af_inet,sock_stream,ipproto_tcp)

)== invalid_socket)

//建立套接字

serveraddr.sin_family = af_inet;

serveraddr.sin_port =

htons

(port)

; = htonl(inaddr_any);//設定繫結客戶機的ip,使用inaddr_any表示可以接收任意ip

serveraddr.sin_addr.s_un.s_addr =

inet_addr

("127.0.0.2");

if(bind

(listensocket,

(sockaddr*

)&serveraddr,

sizeof

(serveraddr)

)==socket_error)

//繫結伺服器的套接字和客戶機的位址if(

listen

(listensocket,5)

== socket_error)

//監聽客戶機連線

printf

("we are waiting a connection on port %d.\n"

,port)

;printf

("listen(正在監聽)...\n");

clientaddrlen =

sizeof

(sockaddr)

;//接收客戶機,返回客戶機的套接字,建立新連線if(

(newconnect =

accept

(listensocket,

(sockaddr*

)&clientaddr,

&clientaddrlen)

)== invalid_socket)

printf

("we successfully got a connection from %s:%d\n"

,inet_ntoa

(clientaddr.sin_addr)

,ntohs

(clientaddr.sin_port));

closesocket

(listensocket)

;//關閉伺服器的套接字

printf

("we are waiting to receive data\n");

if((ret =

recv

(newconnect,databuffer,

sizeof

(databuffer),0

))== socket_error)

printf

("we successfully received %d bytes.\n"

,ret)

; databuffer[ret]

='\0'

;printf

("%s\n"

,databuffer)

;printf

("we are new going to close the client connection.\n");

closesocket

(listensocket)

;wsacleanup()

;system

("pause");

}

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

#include

#include

#include

void

main()

//2、建立套接字if(

(s =

socket

(af_inet,sock_stream,ipproto_tcp)

)== invalid_socket)

//3、根據伺服器ip和埠連線伺服器

serveraddr.sin_family = af_inet;

serveraddr.sin_port =

htons

(port)

; serveraddr.sin_addr.s_un.s_addr =

inet_addr

("127.0.0.1");

printf

("we are trying to connect to %s:%d...\n"

,inet_ntoa

(serveraddr.sin_addr)

,htons

(serveraddr.sin_port));

if(connect

(s,(sockaddr*

)&serveraddr,

sizeof

(serveraddr)

)==socket_error)

printf

("our connection succeeded.\n");

printf

("we will now try to send a hello messgae.\n");

//4、伺服器連線成功之後,向伺服器傳送helloif(

(ret =

send

(s,"hello",5

,0))

== socket_error)

printf

("we successfully sent %d bytes.\n"

,ret)

;system

("pause");

}

TCP資料的傳輸過程

建立連線後,兩台主機就可以相互傳輸資料了。如下圖所示 上圖給出了主機a分2次 分2個資料報 向主機b傳遞200位元組的過程。首先,主機a通過1個資料報傳送100個位元組的資料,資料報的 seq 號設定為 1200。主機b為了確認這一點,向主機a傳送 ack 包,並將 ack 號設定為 1301。為了...

TCP資料的傳輸過程

tcp資料的傳輸過程建立連線後,兩台主機就可以相互傳輸資料了。如下圖所示 上圖給出了主機a分2次 分2個資料報 向主機b傳遞200位元組的過程。首先,主機a通過1個資料報傳送100個位元組的資料,資料報的 seq 號設定為 1200。主機b為了確認這一點,向主機a傳送 ack 包,並將 ack 號設...

TCP資料的傳輸過程

tcp transmission control protocol,傳輸控制協議 是一種面向連線的 可靠的 基於位元組流的通訊協議,資料在傳輸前要建立連線,傳輸完畢後還要斷開連線。客戶端在收發資料前要使用 connect 函式和伺服器建立連線。建立連線的目的是保證ip位址 埠 物理鏈路等正確無誤,為...