python3网络编程socket
实验环境搭建
接收端和发送
我在虚拟机win7启动一个网络调试工具
这个我已经启动了
创建套接字
代码
1 | #导入库 |
代码说明
- 导入socket
1 | import socket |
- Python 中,我们用 socket() 函数来创建套接字,语法格式如下
1 | s=socket.socket(socket. AF_INET,SOCK_STREAM或者SOCK_DGRAM) |
解释
第一个: socket. AF_INET是IPv4的意思
第二个: SOCK_STREAM和SOCK_DGRAM,如果填写SOCK_STREAM是tcp的意思,SOCK_DGRAM是udp的意思
3. 关闭socket
1 | s.close() |
向目标发送信息
- 发送端
代码
1 | #导入库 |
代码讲解
创建套接字上面已经说了
1.代码
1 | s.sendto(b"abcd",("192.168.31.207",8080)) |
里面的参数
第一个:是发送到内容,应为他发送不支持字符串只支持bytes类型的所以就b就不是字符串了
看一下有b和没有b的类型
第二个:是目标(host)和端口(port),这个括号()是python的元组
看一下结果
- 发送代码升级替换b
代码代码讲解1
2
3
4
5
6
7
8
9
10
11#导入库
import socket
#创ipv4,和UDP类型的建套接字
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#发送信息
s.sendto("abcd".encode("utf-8"),("192.168.31.207",8080))
#关闭套接字
s.close()
添加一个encode(“utf-8”)就可以解决用b来代替了
结果 - 指定源端口
代码代码介绍1
2
3
4
5
6
7
8
9
10
11
12
13
14#导入库
import socket
#创ipv4,和UDP类型的建套接字
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定源端口
s.bind(("192.168.31.112",8080))
#发送信息
s.sendto("dsadsa".encode("utf-8"),("192.168.31.207",8080))
#关闭套接字
s.close()绑定本地地址1
s.bind(("192.168.31.112",8080))
里面是一个元组里面
第一个:是本地的IP
第二个:是监听的本地的端口
接收
- 接收
代码
1 | #导入库 |
代码介绍
1.代码
1 | s.bind(("192.168.31.112",8080)) |
绑定本地地址
里面是一个元组里面
第一个:是本地的IP
第二个:是监听的本地的端口
2.代码
1 | a=s.recvfrom(1024) |
recvfrom()函数是用来接收UDP数据的,
大部分我们都是接收数据都是给他1024
结果
用网络调试工具发数据
看一下这个已经接收到了数据
2. 接收代码升级
代码
1 | #导入库 |
代码介绍
1.代码
1 | b=a[1][0] |
如果不进行分割看一下他的元组
应为接收的数据是元组格式格式的里面有发的数据和ip端口
这个就进行分割了
2.代码
1 | print("目标",b) |
这个分割出来了输出结果
应为数据需要解码所以就用decode(‘utf-8’)进行解码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZSSのW啥都学!
评论