python 网络编程
TCP/IP协议IP地址端口:尽量不要小于1024 TCP socket连接 传输过程TCP socket API ---python简单的服务器程序:server.pyimport sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((''...
·
TCP/IP协议
IP地址
端口:尽量不要小于1024
TCP socket连接
传输过程
TCP socket API ---python
简单的服务器程序:
server.py
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',8888))#绑定端口 是二元组 第一个‘’表示绑定本机,第二个是端口 8888
s.listen() #监听8888端口
#等待客户端
conn_new_socket,address=s.accept() #接收的也是 二元组 ,第一个是新的socket 第二个地址
#连接成功
print(address)
#开始连接
data=conn_new_socket.recv(1024) #最大接收字节
print("从客户端接受的:{0}".format(data.decode())) #转换格式
#给客户端发数据
conn_new_socket.send('你好'.encode())#转码
#s释放资源
conn_new_socket.close()
s.close()
client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器端
s.connect(('127.0.0.1', 8888)) # 服务器在本机127.0.0.1 端口8888
print('lianjie 建立')
#给服务器端发送数据
s.send(b'hello')
#服务器端接受
data=s.recv(1024)
print('f服务器接受消息:{0}'.format(data.decode()))
#
#释放资源
s.close()
先运行server 在运行client
结果:
server.py
client.py
上传图像文件
upload_server.py
import socket
Host = ''
port = 7890 # 端口
File_name = r'new121.png'
# 可以用with 不用写close了
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sk:
sk.bind((Host, port))
sk.listen(10) # 监听数上限
print('fuwuqi start')
while True:
with sk.accept()[0] as conn:
buffer = [] # 列表作为缓冲区
while True: # 反复接受客户端数据
data = conn.recv(1024)
if data:
buffer.append(data)
else:
break
b = bytes() # 空的字节序列对象
b = b.join(buffer) # 连接列表内数据
with open(File_name, 'wb') as f:
f.write(b) # 写入b
print('接受完成')
upload_client.py
import socket
host='127.0.0.1'
prot=7890
file='121.png'
with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as sk:
sk.connect((host,prot))
with open(file,'rb') as f:
b=f.read()
sk.sendall(b)
print('上传完成')
------------------------------------------------------------------------------------------
UDP协议
UDP socket
例子:
UPD_server.py
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #使用UDP
s.bind(('',7890)) #本地IP 端口号
print('服务器启动')
#从客户端接收数据
data,client_address=s.recvfrom(1024)
print('从 客户端接收:{}'.format(data.decode()))
#给客户端发
s.sendto('你好'.encode(),client_address)
s.close()
UDP_client.py
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#地址
server_d=('127.0.0.1',7890)
#向服务器发送
s.sendto(b'Hello',server_d)
#从服务器接受数据
data,_=s.recvfrom(1024)
print('从服务器接受的:{}'.format(data.decode()))
s.close()
——————————————————————————————
通过URL访问网络资源
URL
Http协议
https 商业常用的
URLLib库
例子:
import urllib.request
with urllib.request.urlopen('http://www.sina.com.cn/') as response:
data = response.read() # 相当于文件类型 使用read
html = data.decode() # 解码
print(html) #打印网页html代码
更多推荐
所有评论(0)