使用python怎么實現客戶端與服務端之間的通信-創新互聯

使用python怎么實現客戶端與服務端之間的通信?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

創新互聯建站是一家專業提供蚌山企業網站建設,專注與成都網站建設、做網站H5技術、小程序制作等業務。10年已為蚌山眾多企業、政府機構等服務。創新互聯專業網站設計公司優惠進行中。

函數介紹

Socket對象方法:

服務端:

函數描述
.bind()綁定地址關鍵字,AF_INET下以元組的形式表示地址。常用bind((host,port))
.listen()監聽TCP,可以掛起的較大連接數,該值至少為1,一般設為5即可
.accept()被動接受TCP客戶端的連接

客戶端:

函數描述
.connect()初始化服務器連接
.connect_ex()是對connect()函數的擴展,當出錯時返回出錯碼,不報異常

其它函數:

函數描述
.recv()接收數據,數據以字符串的形式返回,bufsize指定接收的較大數據量。
.send()發送數據,將string中的數據發送到連接的套接字,返回值是要發送的字節數量,通常使用.encode()函數對數據進行轉碼
.senddall()發送完整的數據,在返回之前會嘗試發送所有數據,成功返回None,失敗則拋出異常。
.recvfrom()與recv()函數類似,不同的是返回值是(data,address),其中data是包含接收數據的字符串,address是發送數據的套接字地址。
.sendto()發送UDP數據,將數據發送到套接字,形式是(ipaddr,port)的元組。
.close()關閉套接字

服務端

使用socket函數來創建一個socket對象,并設置一個socket服務,然后通過bind(hostname,port)函數來指定一個端口,使用socket對象的accept方法,等待客戶端的連接,并返回connection對象。
具體步驟為:

創建服務端套接字
serversocket=socket()
把地址綁定到套接字
serversocket.bind()
對連接進行監聽
serversocket.listen()
使用一個while進行循環,并接收客戶端的連接
while True:
 serverclient=serversocket.accept()
 while True:
   #接收已發送
   serverclient.recv()
   serverclient.send()
   #關閉客戶端套接字
   serverclient.close()
關閉服務端套接字
serversocket.close()

具體代碼實現:

import socket
import sys
import time

serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()#獲取本地主機名
port=9999
#綁定端口號
serversocket.bind((host,port))

#設置較大連接數
serversocket.listen(5)
while True:
  print('服務器啟動,監聽客戶端鏈接')
  clientsocket,addr=serversocket.accept()
  print('鏈接地址:%s' % str(addr))
  while True:
    try:
      data=clientsocket.recv(1024)
    except Exception:
      print('斷開的客戶端:',addr)
      break
    print('客戶端發送內容:',data.decode('utf-8'))
    reply=input('回復:').strip()
    if not reply:
      break
    msg=time.strftime('%Y-%m-%d %X')#獲取結構化時間戳
    msg1='[%s]:%s'% (msg,reply)
    clientsocket.send(msg1.encode('utf-8'))
  clientsocket.close()
serversocket.closel()

實現功能:通過while實現循環接收客戶端發送的數據,并對客戶端發送的數據進行顯示并返回給客戶端數據,返回給客戶端的數據信息后加入時間戳。

客戶端

創建一個客戶端用來連接以上服務的的服務,使用socket.connect()方法打開一個TCP連接到主機,連接后可以從服務端獲取數據,在操作完成后關閉連接。 具體步驟為: ``` 創建客戶端的套接字 client=socket() 嘗試連接服務器 client.connect() 發送并接收數據 client.send() client.recv() 關閉客戶端套接字 client.close() ``` **具體代碼實現:**

import socket
import sys


s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()
port=9999
s.connect((host,port))
while True:
  data= input('>>').strip()
  if not data:
    break
  s.send(data.encode('utf-8'))
  msg=s.recv(1024)
  if not msg:
    break
  print(msg.decode('utf-8'))
s.close()

測試

使用cmd命令行中打開到代碼所在文件目錄,執行python 服務端文件名.py,再另打開一個cmd命令界面執行 python 客戶端文件名.py
在pycharm中運行服務端代碼,運行結果:

使用python怎么實現客戶端與服務端之間的通信

在cmd中運行客戶端代碼,運行結果:

使用python怎么實現客戶端與服務端之間的通信

看完上述內容,你們掌握使用python怎么實現客戶端與服務端之間的通信的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

新聞名稱:使用python怎么實現客戶端與服務端之間的通信-創新互聯
網址分享:http://m.kartarina.com/article6/ccihig.html

成都網站建設公司_創新互聯,為您提供網站設計域名注冊建站公司Google網站排名App開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 无码AV中文字幕久久专区| 亚洲中文字幕无码亚洲成A人片| 亚洲AV无码无限在线观看不卡| 日韩人妻无码精品久久久不卡| 亚洲爆乳少妇无码激情| 日韩成人无码中文字幕| 无码国内精品久久人妻| 无码办公室丝袜OL中文字幕| 亚洲中文字幕无码中文字在线| 精品少妇无码AV无码专区| 人妻少妇乱子伦无码专区| 人妻丰满熟妇AV无码片| 人妻av无码专区| 熟妇人妻无码中文字幕老熟妇| 免费无码又爽又刺激网站直播| 欲色aV无码一区二区人妻| 亚洲欧洲精品无码AV| 少妇无码?V无码专区在线观看| 亚洲AV成人无码天堂| 亚洲熟妇无码八AV在线播放| 精品久久久久久无码中文字幕| 亚洲国产精品无码第一区二区三区| 亚洲国产精品无码久久一区二区 | 曰韩无码无遮挡A级毛片| 久久精品中文字幕无码| 东京热加勒比无码视频| 国产高清不卡无码视频| 国产精品无码亚洲精品2021| 在线观看无码AV网站永久免费| 无码AV波多野结衣久久| 久久久久亚洲AV成人无码网站 | 国产AV无码专区亚洲AV男同| 狠狠躁夜夜躁无码中文字幕| 青春草无码精品视频在线观| 无码国产69精品久久久久孕妇| 亚洲国产AV无码一区二区三区 | 久久亚洲精品无码gv| 日韩av无码成人无码免费| 无码熟妇人妻在线视频| 亚洲av无码兔费综合| 免费无码国产在线观国内自拍中文字幕 |