協(xié)議
- HTTP
- DNS
- FTP
- SSH
- SNMP
- ICMP ping
- DHCP
OSI七層
- 應(yīng)用
- 表示
- 會(huì)話
- 傳輸
- 網(wǎng)絡(luò) IP
- 數(shù)據(jù)鏈路 MAC
- 物理層
地址簇 Socket Families(網(wǎng)絡(luò)層)
- socket.AF_UNIX unix本機(jī)進(jìn)程間通信
- socket.AF_INET IPV4
- socket.AF_INET IPV6
Socket Types
- socket.SOCK_STREAM # for tcp
- socket.SOCK_DGRAM # for udp
- socket.SOCK_RAW # 原始套接字可以處理 ICMP、IGMP等網(wǎng)絡(luò)報(bào)文
- socket.SOCK_RDM # 是一種可靠的UDP形式保證數(shù)據(jù)交互不保證順序
TCP
- 三次握手,四次斷開(kāi)
查看端口
- netstat -ano # 查看端口占用情況
- netstat -aon|findstr "9050" # 查看端口占用情況
Server
import socket
socketServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socketServer.bind(("localhost", 8888)) # 這里必須傳入一個(gè)元組
socketServer.listen(5)
while True:
clientSocket, address = socketServer.accept()
print("客戶(hù)端連接上了")
bytes1 = clientSocket.recv(1024)
print("接收消息:", str(bytes1, encoding="utf-8", errors="strict"))
myStr = input("發(fā)送信息:")
clientSocket.send(bytes(myStr, encoding="utf-8", errors="strict"))
serverSocket.close()
Client
import socket
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSocket.connect(("localhost", 8888))
while True:
myStr = input("請(qǐng)輸入消息")
clientSocket.send(myStr.encode(encoding="utf-8", errors="strict"))
bytes = clientSocket.recv(1024)
print(str(bytes, encoding="utf-8", errors="strict"))
clientSocket.close()
UDP
Server
import socket
udpserver = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpserver.bind(("192.168.23.1", 8848))
while True:
data, addr = udpserver.recvfrom(1024)
message = str(data, encoding="utf-8", errors="ignore")
print("來(lái)自", addr, "消息", message)
udpserver.close()
Client
import socket
# socket.AF_INET
# socket.SOCK_DGRAM
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
mystr = input("你想說(shuō)啥:")
udp.sendto(mystr.encode("utf-8", errors="ignore"), ("127.0.0.1", 8848))
print(udp.recv(1024).decode("utf-8")) # 收消息
udp.close()
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。