tcp套接字socket程式設計

2021-09-24 05:51:41 字數 1568 閱讀 3410

套接字:進行網路通訊的一種手段,socket

流式套接字(sock_stream):傳輸層基於tcp協議進行通訊

資料報套接字(sock_dgram):傳輸層基於udp協議進行通訊

原始套接字:訪問底層協議的套接字

流式套接字:

tcp服務端

from socket import *

1、建立套接字

socket(scoket_family=af_inet,socket_type=sock_stream,proto=0)

功能:建立套接字

socket_type:套接字型別sock_stream(流式),sock_dgram資料報

proto:子協議型別預設為0

返回值:返回建立的套接字

2、繫結ip和埠號

sockfd.bind()

功能:繫結ip和埠

引數:是乙個元組,第一項是字串形式的ip,第二項是埠號

('192.168.1.2',8888)

3、讓套接字具有監聽功能

sockfd.listen(n)

功能:使套接字變為監聽套接字,同時建立監聽佇列

引數:n監聽佇列大小

4、等待客戶端連線

socket.accept()

功能:阻塞等待客戶端連線

返回值:第乙個:返回乙個新的套接字用來和客戶端通訊

5、訊息的收發

recv(buffer)

功能:接受訊息

引數:一次接受訊息的大小 位元組

返回值:接受到的內容 

send()

功能:傳送訊息

引數:傳送的內容(byte)

返回值:傳送了多少個位元組

6、關閉套接字

close()

功能:關閉套接字

tcp客戶端流程

1、建立流式套接字

2、發起連線請求

connect()

功能:發起連線

引數:乙個元組 第乙個元素:伺服器的ip,第二個元素:伺服器的port

3、收發訊息

4、關閉套接字

關於recv和send

傳送接受緩衝區:傳送和接收訊息均放到緩衝區再進行處理

recv接收訊息當一次接受不完的時候會下次繼續接收

當recv阻塞時,如果客戶端斷開,則recv立即返回乙個空字串

tcp粘包處理

tcp中資料以資料流的方式傳送接收,每次傳送的資料間沒有邊界,在接收時可能造成資料的粘連即使為粘包

粘包如何處理:

1、每次傳送訊息結束位置加標誌

2、傳送的訊息新增結構描述

3、當連續傳送時每次傳送有乙個短暫延遲sleep(0.1)

socket套接字 TCP使用

使用流程 建立套接字 connect鏈結tcp伺服器 命令 socket物件.connect 伺服器ip,伺服器port 3.收 發資料recv 接收資料的大小 send 傳送資料 4.關閉套接字 import socket def main 建立socekt物件 tcp socket socket...

TCP套接字程式設計

網路程式設計又稱為套接字程式設計,為了與遠端計算機進行資料傳輸,需要連線到網際網路,而程式設計中的 套接字 就是用來連線該網路的工具。它本身具有連線的含義,還可以表示為兩台計算機之間的網路連線。4.呼叫accept函式受理連線請求 基於tcp的服務端 客戶端 tcp伺服器端預設函式呼叫順序 sock...

TCP套接字程式設計

對於socket不理解的可以檢視 c語言通過socket程式設計實現tcp通訊,linux socket程式設計 socket詳解 先看看程式效果圖 提示如果伺服器,直接通過ctrl z關閉,這樣程式占用的位址不會釋放,需要以下操作 1.ps 檢視程序 2.kill 9 程式pid 強制殺死程序 服...