Linux下查看已安装模块
[root@dewan01 list]# pydoc modules
## 或者
>>> help("modules")
执行pip -V 报错
ModuleNotFoundError: No module named 'pip._internal'
百度办法:
## vim /usr/bin/pip
#from pip._internal.cli.main import main ## 将此行注释,添加下面一行
from pip import main
## 验证
[root@dewan01 bin]# pip -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
UDP通信的例子
建一个新的目录,在其中创建 udp_server.p、udp_client.py
[root@dewan01 test]# cat udp_server.py
import socket
server = socket.socket(type=socket.SOCK_DGRAM) # type=socket.SOCK_DGRAM 指定成 UDP 协议 type=socket.SOCK_STREAM TCP协议(默认就是,不用指定)
server.bind(('127.0.0.1', 8088))
# UDP 不需要设置半连接池(server.listen(5)),也没有半连接池的概念
# UDP 没有双向通道,所以也不需要建立连接(conn, addr = server.accept())
# 直接就是通信循环
while True: # 这里只需要直接通信(交互)即可
data, addr = server.recvfrom(1024)
print("数据:", data.decode('utf-8')) # 客户端发来的消息
print("地址:", addr) # 客户端的地址
re_msg = input("Please input your response msg:").strip() # 会阻塞在这里,这里过了,才能发出信息,看到下一条信息
server.sendto(re_msg.encode('utf-8'), addr) # 向客户端发送消息
[root@dewan01 test]# cat udp_client.py
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
# UDP 不需要建立连接(client.connect(('127.0.0.1', 8088)))
server_addr = ('127.0.0.1', 8088) # UDP sendto发消息时需要一个服务器的地址及端口号
while True:
msg = input("Please input your msg:").strip()
client.sendto(msg.encode('utf-8'), server_addr) # 向服务器发送数据,要附带服务器端地址及端口(基于网络传输的数据都必须是二进制的)
data, msg_from_server_addr = client.recvfrom(1024) # 收到消息,且得到地址
print("服务端发来的数据:", data.decode('utf-8'))
print("服务器端的ip及端口", msg_from_server_addr)
开始验证:
启动
## 先启动client,会提示如下。此时由于服务端未启动,所以即便输入也不会有反馈。
[root@dewan01 test]# python udp_client.py
Please input your msg:
## 启动server,开始监听8088端口传来的信息。可以看到8088端口已经启动监听。
[root@dewan01 test]# python udp_server.py
[root@dewan01 bin]# netstat -anp | grep 8088
udp 0 0 127.0.0.1:8088 0.0.0.0:* 24647/python
交互
## 在客户端输入hi,回车:
[root@dewan01 test]# python udp_client.py
Please input your msg:hi
## 此时服务端显示:
[root@dewan01 test]# python udp_server.py
数据: hi
地址: ('127.0.0.1', 55795)
Please input your response msg:
## 服务端输入haha,回车:
Please input your response msg:haha
## 此时客户端显示:
服务端发来的数据: haha
服务器端的ip及端口 ('127.0.0.1', 8088)