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

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

生活随笔

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

python

python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)...

發(fā)布時(shí)間:2024/7/23 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、UPD Socket 編程

socket 對(duì)象中與UDP Socket 服務(wù)器編程有關(guān)的方法是bind() ,注意不需要listen() 和accept() , 這是因?yàn)閁DP 通信不需要像TCP 一樣監(jiān)聽端口,建立連接。

socket.recvfrom(buffsize) : 接收UDP Socket 數(shù)據(jù),該方法返回 二元組對(duì)象(data,address) ,data 是接收的字節(jié)序列對(duì)象;address 是發(fā)送數(shù)據(jù)的遠(yuǎn)程Socket 地址。參數(shù)buffsize 指定一次接收的最大字節(jié)數(shù),因此如果要接收的數(shù)據(jù)量大于buffsize ,則需要多次調(diào)用該方法進(jìn)行接收。

socket.sendto(bytes, address) : 發(fā)送UDP Socket 數(shù)據(jù),將bytes 數(shù)據(jù)發(fā)送到地址為address 的遠(yuǎn)程Socket ,返回成功發(fā)送的字節(jié)數(shù)。如果要發(fā)送的數(shù)據(jù)量很大,則需要多次調(diào)用該方法發(fā)送數(shù)據(jù)。

舉例:

# 服務(wù)器

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.bind(('', 8888))

print(' 服務(wù)器啟動(dòng)...')

# 從客戶端接收數(shù)據(jù)

data, address = s.recvfrom(1024)

print(' 從客戶端接收消息:{0}'.format(data.decode()))

# 給客戶端發(fā)送數(shù)據(jù)

s.sendto(' 你好!'.encode(), address)

# 釋放資源

s.close()

# 客戶端

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 服務(wù)器地址

address=('127.0.0.1', 8888)

# 給服務(wù)器發(fā)送數(shù)據(jù)

s.sendto(b'Hello', address)

# 從服務(wù)器接收數(shù)據(jù)

data, _ = s.recvfrom(1024)

print(' 從服務(wù)器接收消息:{0}'.format(data.decode()))

# 釋放資源

s.close()

二、TCP 上傳文件

==服務(wù)器端:==

import wx

import socket

class MyFrame(wx.Frame):

def __init__(self):

super().__init__(parent=None,size=(300,150),title="服務(wù)器接收文件")

self.Center()

panel=wx.Panel(self)

self.fileText = wx.TextCtrl(panel,id=-1,pos=(15,5),size=(200,25))

openButton = wx.Button(panel, label="開啟服務(wù)器")

upButton = wx.Button(panel, label="保存" )

openButton.Bind(wx.EVT_BUTTON, self.acceptFile)

upButton.Bind(wx.EVT_BUTTON, self.saveFile)

box = wx.BoxSizer()

mainbox=wx.BoxSizer(wx.VERTICAL)

mainbox.Add(self.fileText, 1, flag= wx.ALL|wx.CENTER,border=10)

box.Add(openButton, 1, flag=wx.ALL|wx.CENTER,border=10)

box.Add(upButton, 1, flag=wx.ALL | wx.CENTER, border=10)

mainbox.Add(box, 1, flag=wx.ALL | wx.CENTER, border=10)

panel.SetSizer(mainbox)

def acceptFile(self, event):

self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

self.s.bind(("", 8888))

self.s.listen(5)

print("服務(wù)器啟動(dòng)····")

with self.s.accept()[0] as conn:

buffer = []

while True:

data = conn.recv(1024)

if data:

buffer.append(data)

else:

break

self.reust = bytes().join(buffer)

self.fileText.SetValue("接收完全,可選擇位置保存!")

def saveFile(self, event):

dlg = wx.FileDialog(self,message="select the Save file style",defaultFile="",)

if dlg.ShowModal() == wx.ID_OK:

filename = ""

paths = dlg.GetPaths()

for path in paths:

filename = filename + path

self.fileText.SetValue(filename)

with open(filename, "wb") as file:

file.write(self.reust)

print("服務(wù)器文件保存完成····")

dlg.Destroy()

class App(wx.App):

def OnInit(self):

frame=MyFrame()

frame.Show()

return True

if __name__=="__main__":

app=App()

app.MainLoop()

==客戶端:==

import socket

import wx

class MyFrame(wx.Frame):

def __init__(self):

super().__init__(parent=None,size=(300,150),title="客戶端上傳文件")

self.Center()

panel=wx.Panel(self)

self.fileText = wx.TextCtrl(panel,id=-1,pos=(15,5),size=(200,25))

openButton = wx.Button(panel, label="打開")######

upButton = wx.Button(panel, label="上傳" )

openButton.Bind(wx.EVT_BUTTON, self.onOpenFile)####

upButton.Bind(wx.EVT_BUTTON, self.upLoad)

box = wx.BoxSizer()

mainbox=wx.BoxSizer(wx.VERTICAL)

mainbox.Add(self.fileText, 1, flag= wx.ALL|wx.CENTER,border=10)

box.Add(openButton, 1, flag=wx.ALL|wx.CENTER,border=10)

box.Add(upButton, 1, flag=wx.ALL | wx.CENTER, border=10)

mainbox.Add(box, 1, flag=wx.ALL | wx.CENTER, border=10)

panel.SetSizer(mainbox)

def onOpenFile(self, event):

dlg = wx.FileDialog(

self, message="Choose a file",

defaultFile="",)

if dlg.ShowModal() == wx.ID_OK:

tmp = ""

paths = dlg.GetPaths()

for path in paths:

tmp=tmp+path

self.fileText.SetValue(tmp)

dlg.Destroy()

def upLoad(self,event):

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

s.connect(("127.0.0.1", 8888))

with open(self.fileText.GetValue(), "rb") as file:

while True:

data = file.read(1024)

if data:

s.send(data)

else:

break

print("上傳完成")

class App(wx.App):

def OnInit(self):

frame=MyFrame()

frame.Show()

return True

if __name__=="__main__":

app=App()

app.MainLoop()

三、TCP 計(jì)算圓的面積

==服務(wù)器端:==

import socket

import wx

class MyFrame(wx.Frame):

def __init__(self):

super().__init__(parent=None,size=(350,250),title="服務(wù)器:計(jì)算圓的面積")

self.Center()

panel=wx.Panel(self)

self.text = wx.TextCtrl(parent=panel, id=-1, style=wx.TE_MULTILINE,size=(100,150))

mainbox=wx.BoxSizer(wx.VERTICAL)

mainbox.Add(self.text,flag=wx.EXPAND)

panel.SetSizer(mainbox)

# 應(yīng)用程序

class App(wx.App):

def OnInit(self):

frame=MyFrame()

frame.Show()

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

s.bind(("127.0.0.1", 8888))

s.listen(5)

with s.accept()[0] as conn:

while True:

data = conn.recv(1024)

if len(data) != 0:

frame.text.LabelText += "你的半徑為:" + data.decode() + "\r\n"

msg=str(3.14*float(data.decode())**2)

conn.send(msg.encode())

frame.text.LabelText += "計(jì)算結(jié)果:" + msg + "\r\n"

else:

break

return True

# 進(jìn)入main函數(shù)運(yùn)行:循環(huán)

if __name__=="__main__":

app=App()

app.MainLoop()

==客戶端:==

import socket

import wx

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

class MyFrame(wx.Frame):

def __init__(self):

super().__init__(parent=None, size=(350, 250), title="客戶端:計(jì)算圓的面積")

self.Center()

panel = wx.Panel(self)

self.text = wx.TextCtrl(parent=panel, id=-1, style=wx.TE_MULTILINE, size=(100, 150))

startbutton = wx.Button(parent=panel, id=1, label="連接服務(wù)器")

self.inputtext = wx.TextCtrl(parent=panel, id=3,style=wx.TE_PROCESS_ENTER)

button = wx.Button(parent=panel, id=2, label="發(fā)送")

self.Bind(wx.EVT_BUTTON, self.Talk, id=1)

self.Bind(wx.EVT_BUTTON, self.on_button, id=2)

self.Bind(wx.EVT_TEXT_ENTER, self.on_button, self.inputtext)

box1 = wx.BoxSizer()

box1.Add(startbutton, 1, flag=wx.ALL | wx.EXPAND, border=10)

box1.Add(self.inputtext, 1, flag=wx.ALL | wx.EXPAND, border=10)

box1.Add(button, 1, flag=wx.ALL | wx.EXPAND, border=10)

mainbox = wx.BoxSizer(wx.VERTICAL)

mainbox.Add(self.text, flag=wx.EXPAND)

mainbox.Add(box1, flag=wx.EXPAND)

panel.SetSizer(mainbox)

# 連接服務(wù)器函數(shù)

def Talk(self, event):

s.connect(("127.0.0.1", 8888))

return

# 發(fā)送信息給服務(wù)器端

def on_button(self, event):

msg = self.inputtext.GetValue()# 獲取要發(fā)送的文本

s.send(msg.encode())# 給服務(wù)器端發(fā)送信息

self.text.LabelText += "請(qǐng)輸入半徑:" + msg + "\r\n"# 將發(fā)送信息寫入紀(jì)錄文本框

data = s.recv(1024)# 等待接收服務(wù)器端信息

if len(data) != 0:

self.text.LabelText += "服務(wù)器計(jì)算結(jié)果為:" + data.decode() + "\r\n"# 將發(fā)送信息寫入紀(jì)錄文本框

class App(wx.App):

def OnInit(self):

frame = MyFrame()

frame.Show()

return True

if __name__=="__main__":

app=App()

app.MainLoop()

本文使用 mdnice 排版

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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