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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

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

python

python 12 socket 编程

發(fā)布時(shí)間:2025/5/22 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 12 socket 编程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.socket編程需要兩個(gè)部分 服務(wù)器與客戶(hù)端我們的python中調(diào)用 socket包就不需要自己寫(xiě)協(xié)議了(socket編程中windows 與Linux中的效果是完全不相同了,次代碼最好是放在Linux上運(yùn)行)

# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki# 服務(wù)器import socket server = socket.socket() # 聲明socket類(lèi)型,同時(shí)生成socket連接對(duì)象 server.bind(('localhost', 6969)) # 綁定要監(jiān)聽(tīng)的端口此時(shí)綁定的是本地 server.listen() # 監(jiān)聽(tīng) 括號(hào)里面的就是最大允許鏈接 print('等待電話(huà)打進(jìn)來(lái)') coon, addr = server.accept() # 等待 (此時(shí)上面加一個(gè)while 就可以多個(gè)電話(huà)打進(jìn)來(lái)并且進(jìn)行通話(huà)) # coon 就是客戶(hù)端連過(guò)來(lái)而在服務(wù)器端為其生成的一個(gè)連接實(shí)例 # addr 就是地址 print('電話(huà)打進(jìn)來(lái)了') print(coon, addr) # 將coon 與addr 顯示出來(lái) while True: # 此時(shí)就可以一直不停的發(fā)送數(shù)據(jù)了, 此時(shí)的效果就是一個(gè)電話(huà)可以無(wú)阻礙的通話(huà)# 如果此時(shí)沒(méi)有true的話(huà)就只能接收一次了data = coon.recv(1024) # 接收數(shù)據(jù)print('recv:', data.decode()) # 此時(shí)注意我們需要吧接收的數(shù)據(jù)解碼,因?yàn)榘l(fā)過(guò)來(lái)的是byte類(lèi)型coon.send(data.upper()) # 將數(shù)據(jù)里面的字母轉(zhuǎn)化為大寫(xiě)發(fā)送server.close()

2.客戶(hù)端

# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki# 客戶(hù)端import socket client = socket.socket() # 聲明socket類(lèi)型,同時(shí)生成socket連接對(duì)象 client.connect(('localhost', 6969)) # 連接 while True:ccc = input('>>:')if ccc == '': # 判斷是否為空continueclient.send(ccc.encode('utf-8')) # 發(fā)送byte類(lèi)型data = client.recv(1024) # 接收返回print(data.decode()) # 解碼

?

那下面我們可以了解一下 完整的程序了

?

# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki# 第一步1.import 模塊 然后實(shí)例一個(gè)模塊 若是服務(wù)器的話(huà)要綁定 在監(jiān)聽(tīng),然后等待(返回兩個(gè)值) 然后接收然后在發(fā)送 import os import socketserver = socket.socket() server.bind(('localhost', 9999)) # 綁定地址 server.listen() # 監(jiān)聽(tīng) print('等待電話(huà)') while True:con, addr = server.accept()print('電話(huà)來(lái)了')while True:data = con.recv(1024) # 接收數(shù)據(jù)if not data:print('客戶(hù)端已斷開(kāi)')breakprint(data.decode())cmd_res = os.popen(data.decode()).read()con.send(str(len(cmd_res)).encode('utf-8'))if len(cmd_res) == 0:cmd_res = 'cmd_res has no thing....'client_re = con.recv(1024) # 此處的精妙(隔開(kāi)兩個(gè)send)con.send(cmd_res.encode('utf-8')) # 返回?cái)?shù)據(jù)server.close() # 關(guān)閉# socker粘包(兩個(gè)send連在一起緩沖區(qū)) 例如 # con.send(str(len(cmd_res)).encode('utf-8')) # con.send(cmd_res.encode('utf-8'))# 此時(shí)系統(tǒng)將兩個(gè)send當(dāng)作一個(gè)發(fā)。就需要在中間加一個(gè)client_re = con.recv(1024) 來(lái)等待 就可以做到 # 也就是等到客戶(hù)端確認(rèn)

2.2客戶(hù)端

# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki# 客戶(hù)端 第一步導(dǎo)入模塊,然后實(shí)例化一個(gè) 然后鏈接,然后發(fā)送 然后接收反回import socketclient = socket.socket() client.connect(('localhost', 9999)) while True:data = input('>>:').strip()if len(data) == 0:continueclient.send(data.encode('utf-8'))re_size = client.recv(1024).decode()print(re_size)client.send(b'True')re_cmd_two = 0print('re_cmd_two:', type(re_cmd_two))print('re_size: ', type(re_size))print('大小為:', re_size)while re_cmd_two <= int(re_size):re_cmd_one = client.recv(1024)print(re_cmd_one.decode())re_cmd_two = re_cmd_two + len(re_cmd_one.decode())print(re_cmd_two)print(re_cmd_two)

?

轉(zhuǎn)載于:https://www.cnblogs.com/BookMiki/p/9999000.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的python 12 socket 编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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