日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python高级语法-套接字编程之UDP和TCP编程

發(fā)布時(shí)間:2024/4/11 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python高级语法-套接字编程之UDP和TCP编程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 存在兩類協(xié)議UDPTCP協(xié)議,前者是不安全的不面向鏈接的傳輸,速度快,后者是安全的面向鏈接的傳輸,速度慢。
  • 首先,必須明確服務(wù)器和客戶端的區(qū)別
    • 在服務(wù)器端連接ip地址和端口唯一指定這個(gè)程序,接受訪問,給與反饋,優(yōu)秀的服務(wù)器永遠(yuǎn)不會(huì)停止運(yùn)行。
    • 在客戶端訪問服務(wù)器,發(fā)送消息,給與反饋。
  • 所有都要求先有服務(wù)器開啟才能客戶端連接。
  • 下面主要演示兩種編程實(shí)現(xiàn)簡(jiǎn)單的聊天
  • UDP示例代碼:
    • 服務(wù)器端代碼
    • 客戶端代碼
import socket def serverFunc():# 建立socket# socket.AF_INET使用ipv4協(xié)議族# socket.SOCK_DGRAM使用udp通訊sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 綁定ip和port# 127.0.0.1代表機(jī)器本身(這里也可以指定其他ip地址)# 端口7852(隨機(jī)選擇一個(gè)而已)# 地址是一個(gè)tuple類型。(ip,port)addr = ("127.0.0.1", 7677)sock.bind(addr)# 接受對(duì)方消息# 等待方式為死等,沒有其他可能性# recvfrom接受的返回值是一個(gè)tuple, 前一項(xiàng)表示數(shù)據(jù),后一項(xiàng)表示地址# 參數(shù)的含義是緩沖區(qū)大小while True:data, addr = sock.recvfrom(500)# 發(fā)送過來的數(shù)據(jù)是byte 類型,解碼才得字符串print("收到消息:"+data.decode())rsp = input("發(fā)送消息:")# 發(fā)送數(shù)據(jù)編碼成為bytedata = rsp.encode()sock.sendto(data, addr) if __name__ == '__main__':print("start Server")serverFunc()print("end Server")

?

import socket def clientFunc():sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)while True:text = input("發(fā)送消息:")# 發(fā)送的str必須編碼data = text.encode()# 向該位置發(fā)送數(shù)據(jù)sock.sendto(data, ("127.0.0.1", 7677))# 接受反饋data, addr = sock.recvfrom(200)# 解碼數(shù)據(jù)data = data.decode()print("收到消息:"+data) if __name__ == '__main__':clientFunc()

?

  • TCP示例代碼
    • 服務(wù)器端代碼
    • 客戶端代碼
import socket def tcp_srv():# 建立socket進(jìn)行通訊# socket.AF_INET使用ipv4協(xié)議族# socket.SOCK_STREAM使用tcp通訊sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 綁定端口和地址addr = ("127.0.0.1", 8990)sock.bind(addr)# 監(jiān)聽接入訪問的socketsock.listen()while True:# 接受訪問的socketskt, addr = sock.accept()# 獲得為bytes格式msg = skt.recv(200)msg = msg.decode()rst = "收到消息:{}".format(msg)print(rst)# 發(fā)送反饋msg = input("發(fā)送消息:")skt.send(msg.encode())# 關(guān)閉鏈接通路skt.close() if __name__ == '__main__':print("start Server")tcp_srv()print("end Server")

?

import socket def tcp_clt():sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)addr = ("127.0.0.1", 8990)sock.connect(addr)# 發(fā)送內(nèi)容到服務(wù)器while True:msg = input("發(fā)送消息:")sock.send(msg.encode())# 接受反饋rst = sock.recv(200)print("收到消息"+rst.decode())# 關(guān)閉鏈接通路sock.close() if __name__ == '__main__':tcp_clt()

?

總結(jié)

以上是生活随笔為你收集整理的python高级语法-套接字编程之UDP和TCP编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。