python實現TCP和UDP服務器

python深入淺出進階教程視頻參考

sendto

import socket
updSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
updSocket.sendto("helloworld!".encode('utf-8'),("172.20.52.75", 3333))
updSocket.close()

bind

import socket
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSocket.bind(("172.20.52.75", 6666)) # IP省略表示是自己的IP 綁定發送方的端口 內部是一個元組
udpSocket.sendto("hello world!".encode("UTF-8"),("172.20.52.75", 4444)) #對方IP和Port
data = udpSocket.recvfrom(1024) #阻塞
print(data[0].decode("gbk")) #內容
print(data[1]) #IP和port
udpSocket.close()

broadcast

import socket
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True) #設置廣播
udpSocket.sendto("哈哈 打不過我吧~ 啦啦啦~".encode("GBK"), ("255.255.255.255", 7777))
udpSocket.close()

TCPclient

import socket
address = '127.0.0.1'    #監聽哪些網絡127.0.0.1是監聽本機 0.0.0.0是監聽整個網絡
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #創建套接字
#tcpSocket.bind(("",12345)) #元組
tcpSocket.connect(("172.20.52.75",7777))
tcpSocket.send('約嗎?'.encode("GBK")) #已經建立了連接 直接發送
recvData = tcpSocket.recv(1024)
print(recvData.decode("GBK"))
tcpSocket.close()

TCPserver

import socket
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #創建套接字
tcpSocket.bind(("",8080)) #元組
tcpSocket.listen(128) #監聽上限 在windows 128有效 在linux無效
newSocket,ipPort = tcpSocket.accept() #阻塞等待客戶端連接 ipPort是個元組只有兩個元素
print(ipPort[0]) #IP
print(ipPort[1]) #port
recvData = newSocket.recv(1024)
print(recvData.decode("GBK"))
newSocket.close()
tcpSocket.close()

TCPserver接收多條信息

import socket
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #創建套接字
tcpSocket.bind(("",8080)) #元組
tcpSocket.listen(128) #監聽上限 在windows 128有效 在linux無效
newSocket,ipPort = tcpSocket.accept() #阻塞等待客戶端連接 ipPort是個元組只有兩個元素
print(ipPort[0]) #IP
print(ipPort[1]) #port
while True:
    recvData = newSocket.recv(1024)
    # 當接收到數據爲空的時候,表示客戶端已經斷開連接了
    if recvData:
        print(recvData.decode("GBK"))
    else:
        print("客戶端斷開連接!")
        newSocket.close()
        break
tcpSocket.close()
發佈了1154 篇原創文章 · 獲贊 46 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章