套接字:進行網路通訊的一種手段,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 強制殺死程序 服...