python SOCKET编程基础入门
作者:心悦君兮君不知-睿 时间:2021-04-20 17:22:33
一、UDP编程
1.客户端Client:发起访问的一方。
2.服务器端
3.server段编程
(1)建立socket,socket是负责具体通信的一个实例
(2)绑定,为创建的socket指派固定的端口和IP地址
(3)接受对方发送内容
(4)给对方发送反馈,此步骤为非必须步骤
4.Client端编程
(1)建立通信的socket
(2)发送内容到指定服务器
(3)接受服务器给定的反馈内容
5.模拟一下这个过程
(1)我们先建立一个服务器的函数
#服务器案例
import socket
#模拟服务器的函数
def serverFunc():
#1.建立socket
#socket.AF_INET:使用IPV4协议族
#socket.SOCK_DGRAM:使用UDP通信
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#2.绑定ip和port
#127.0.01:这个ip地址代表的是机器本身
#7852:随机指定的端口号
#地址是一个tuple类型,(ip.port)
addr = ("127.0.0.1",7852)
sock.bind(addr)
#接受对方消息
#等待方式为死等,没有其他可能性
#recvfrom接受的返回值是一个元组,前一项表示数据,后一项表示地址
#参数的含义是缓冲区大小
#rst = sock.recvfrom(500)
data,addr = sock.recvfrom(500)
print(data)
print(type(data))
#发送过来的数据是bytes格式,必须通过解码才能得到str格式内容
#decode默认参数是utf8
text = data.decode()
print(type(text))
print(text)
#给对方反馈的消息
rsp = "I am very hungry now"
#发送的数据需要编程成bytes格式
#默认时utf8
data = rsp.encode()
sock.sendto(data,addr)
if __name__ == "__main__":
print("Start Server")
serverFunc()
print("End Server")
(2)然后创建一个客户端的函数
import socket
def clientFunc():
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
text = "you are very cool"
#发送的数据必须是bytes格式
data = text.encode()
#发送
sock.sendto(data,("127.0.0.1",7852))
data,addr =sock.recvfrom(200)
data = data.decode()
print(text)
if __name__ == "__main__":
print("Start Client")
clientFunc()
print("End Client")
(3)我们先启动服务器端函数
出现如下图像,它是创建了一个sock,然后自己绑定到127.0.0.1:7852,运行到sock.recvfrom(500)这里死等客户端发消息
(4)再启动客户端函数
出现如下发送编码后的text内容到服务器(127.0.0.1:7852),服务器成功接收后返回you are cool这句话。
(5)我们再看服务器的函数那里
接受了bytes格式的字符串,并打印出来了,然后再解码打印出来,最后把you are cool返回客户端。
(6)这里有个地方没有办法:因为我们在一台电脑上做的测试,所以相当于自言自语,不如在两台电脑上进行试验。
二、源码
D33_1_ServerProgramme.py
D33_2_ClientProgramme.py
https://github.com/ruigege66/Python_learning/blob/master/D33_1_ServerProgramme.py
https://github.com/ruigege66/Python_learning/blob/master/D33_2_ClientProgramme.py
来源:https://www.cnblogs.com/ruigege0000/p/11894654.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
致Python初学者 Anaconda入门使用指南完整版
linecache模块加载和缓存文件内容详解
关于使用python反编译apk签名出包的问题
JSP EL表达式详细介绍
![](https://img.aspxhome.com/file/2023/9/97899_0s.jpg)
JavaScript面向对象的简单介绍
Django MTV和MVC的区别详解
![](https://img.aspxhome.com/file/2023/0/75140_0s.png)
PHP crc32()函数讲解
![](https://img.aspxhome.com/file/2023/1/55391_0s.png)
asp防止盗链HTTP_REFERER判断代码
python数据结构之链表的实例讲解
![](https://img.aspxhome.com/file/2023/3/75993_0s.png)
Python ChineseCalendar包主要类和方法详解
Asp 返回引用类型函数代码
2010 图标设计趋势
![](https://img.aspxhome.com/file/UploadPic/201012/17/01-45s.jpg)
判断 iframe 是否加载完成的完美方法
关于xmlhttp乱码的解决方法
HTML在线编辑器的原理分析(整理)
一些让Python代码简洁的实用技巧总结
python使用电子邮件模块smtplib的方法
![](https://img.aspxhome.com/file/2023/3/63203_0s.jpg)
使用jupyter notebook运行python和R的步骤
![](https://img.aspxhome.com/file/2023/0/80410_0s.png)
讲解设计应用程序时避免阻塞的八个准则
php使用composer常见问题及解决办法
![](https://img.aspxhome.com/file/2023/8/55398_0s.jpg)