断言
动态导入模块
网络编程socket
网络层是地址簇
#客户端写法
import socket
client = socket.socket() #声明socket类型,同时生成socket连接对象
client.connect(('localhost',6969)) #连接本地端口
client.send("hello world")
data = client.recv(1024) #1024字节
print("recv:",data)
client.close()
#服务器端
import socket
server = socket.socket()
server.bind(('localhost',6969))#绑定要监听端口
server.listen() #监听
print("我要开始等电话了")
conn,addr=server.accept() #等电话打进来
#conn就是客户端连过来而在服务器端为其生成的一个连接实例
print("电话来了")
data=conn.recv(1024)
print("recv:",data)
conn.send(data.upper())
server.close()
传输中文,改以下代码
client.send("下载".encode("utf-8"))
data = client.recv(1024) #1024字节
print("recv:",data.decode())
同一组对象来回发送
#客户端写法
import socket
client = socket.socket() #声明socket类型,同时生成socket连接对象
client.connect(('localhost',6969)) #连接本地端口
while True:
msg = input(">>:").strip()
client.send(msg.encode("utf-8"))
data = client.recv(1024) #1024字节
print("recv:",data.decode())
client.close()
#服务器端
import socket
server = socket.socket()
server.bind(('localhost',6969))#绑定要监听端口
server.listen() #监听
print("我要开始等电话了")
while True:
conn,addr=server.accept() #等电话打进来
#conn就是客户端连过来而在服务器端为其生成的一个连接实例
print("电话来了")
count = 0
while True:
data=conn.recv(1024)
print("recv:",data)
if not data:
print("client has lost..")
break
conn.send(data.upper())
count+=1
if count>10:break
server.close()
服务器端:
客户端:
socket 粘包
ftp server
1.读取文件名
2.检测文件是否存在
3.打开文件
4.检测文件大小
5.发送文件大小和md5给客户端,md5
6.等客户端确认
7.开始边读边发数据
8.md5 sum 验证