socketserver 分块记录
网络编程
Socket(TCP,IP)套接字 服务端
运行起来, 客户端
客户端
客户端
客户端 服务端:
import socket sk = socket.socket()
#绑定端口号
sk.bind(('127.0.0.1',9999,))
#接收客户请求
sk.listen(5) #链接客户端地址信息
while True:
#
conn,address = sk.accept()
conn.sendall(bytes('老男孩',encoding='utf-8'))
while True:
ret_bytes = conn.recv(1024)
ret_str = str(ret_bytes,encoding='utf-8')
conn.sendall(bytes('你好',encoding='utf-8'))
print(ret_str)
break
print(conn,'\n\n\n',address) 客户端
import socket obj = socket.socket() obj.connect(('127.0.0.1',9999,)) #等待接受服务器消息
r = obj.recv(1024)
print(str(r,encoding='utf-8')) obj.sendall(bytes('呵呵',encoding='utf-8')) r1 = obj.recv(1024)
print(str(r1,encoding='utf-8')) obj.close()
文件传输
服务端
import socket sk = socket.socket()
#绑定端口号
sk.bind(('127.0.0.1',9999,))
#接收客户请求
sk.listen(5) #链接客户端地址信息
conn,address = sk.accept() file_name = conn.recv(1024)
str_file_name = str(file_name,encoding = 'utf-8')
r = 0
f = open('D:\E\semantic\%s'%str_file_name,'wb')
while True:
r += 1
print(r)
ret_bytes = conn.recv(1024)
f.write(ret_bytes)
f.flush()
if ret_bytes:
pass
else:
print('ok')
break 客户端 import time,os
time.sleep(3)
import socket
obj = socket.socket()
obj.connect(('127.0.0.1',9999,)) path_name = 'D:\e\同步文件\桌面 EXT/123.xlsx'
file_name = os.path.basename(path_name)
obj.sendall(bytes(file_name,encoding='utf-8')) q = 0
with open(path_name,'rb') as f: for i in f:
q += 1
print(q)
obj.sendall(i) obj.close()
socketserver多进程服务器:
并发处理多个客户请求
使用方法:
1,创建类,必须继承
2,handle方法
3,server.serve_forever() import socket,socketserver class myserver(socketserver.BaseRequestHandler):
def handle(self): conn = self.request
conn.sendall(bytes('hello',encoding='utf-8'))
ret = conn.recv(1024)
ret_str = str(ret,encoding='utf-8')
print(ret_str) if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1',9999),myserver)
server.serve_forever()
socketserver 服务器多进程 文件传输 服务器
import socket,socketserver class myserver(socketserver.BaseRequestHandler):
def handle(self):
conn = self.request
file_name = conn.recv(1024)
tr_file_name = str(file_name,encoding='utf-8')
f = open('D:\E\semantic/%s'%tr_file_name,'wb')
conn.sendall(bytes('腻2',encoding='utf-8'))
r = False
ww = 0
while not r:
data = conn.recv(1024)
f.write(data)
if data:
ww += 1
print(ww)
else:
r = True if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1',9999),myserver)
server.serve_forever() 客户端
import time,os
time.sleep(2)
import socket
obj = socket.socket()
obj.connect(('127.0.0.1',9999,))
path_name = 'D:\E\同步文件\装修Banner\产品抠图/用品2.psd'
file_name = os.path.basename(path_name)
obj.sendall(bytes(file_name,encoding='utf-8'))
print(str(obj.recv(1024),encoding='utf-8')) q = 0
with open(path_name,'rb') as f:
for i in f:
q += 1
print(q)
obj.sendall(i) obj.close()

socketserver 分块记录的更多相关文章
- poj 1141 Brackets Sequence 区间dp,分块记录
Brackets Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35049 Accepted: 101 ...
- BZOJ 3744 Gty的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树上掉落下来了许多妹子,他发现 她们排成了一个序 ...
- 【Django】 初步学习
这个系列(或者成不了一个系列..)预计会全程参考Vamei様的Django系列,膜一发.说句题外话,其实更加崇拜像Vamei那样的能够玩转生活.各个领域都能取得不小成就的人. [Django] ■ 概 ...
- 1002: 当不成勇者的Water只好去下棋了---课程作业---图的填色
1002: 当不成勇者的Water只好去下棋了 Time Limit: 1 Sec Memory Limit: 128 MB Description 由于魔王BOSS躲起来了,说好要当勇者的Wate ...
- Web Service 附件技术的发展及演变
Web Service 通常将业务数据封装在 SOAP 主体或者 SOAP 消息附件中进行传输,这些附件往往采用 Base64 编码二进制方式进行封装,这将大大增加待传输的数据量,消耗比较长的编码时间 ...
- php 大数组 foreach 循环嵌套的性能优化
前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒! 这麽慢,然后在代码中分块记录它 ...
- Codeforces 刷水记录
Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...
- Codeforces 307 div2 E.GukiZ and GukiZiana 分块
time limit per test 10 seconds memory limit per test 256 megabytes input standard input output stand ...
- CodeChef COUNTARI Arithmetic Progressions(分块 + FFT)
题目 Source http://vjudge.net/problem/142058 Description Given N integers A1, A2, …. AN, Dexter wants ...
随机推荐
- 【前端】CommonJS的模块加载机制
CommonJS的模块加载机制 CommonJS模块的加载机制是,输入的是被输出的值的拷贝.也就是说,一旦输出一个值,模块内部的变化就影响不到这个值. 例如: // lib.js var counte ...
- cocoapods使用一直Updating local specs repositories的解决方案
pod install 换成pod install --verbose --no-repo-update这个命令,前面的命令被墙了 ,<pre id="best-content-226 ...
- Json解析实例
using System; using System.Collections.Generic; using System.Runtime.Serialization; using System.Win ...
- sublimetext3备份
http://files.cnblogs.com/files/hwd13/Data.zip http://files.cnblogs.com/files/hwd13/sublime3.zip
- MacOS X Terminal中设置代理
MacOS X中,即使在网络设置中配置了代理连接,Terminal中也不能访问不可描述的东西,需要额外设置. 我用的是Shadowsocks,使用privoxy搭建了本地的代理服务器,地址是http: ...
- iOS 圆的放大动画效果
第一步:创建一个View,将这个View添加到当前的控制器 如: CGFloat timeW = self.view.bounds.size.width; timeAnimation * timean ...
- CSS3:clip-path
旧的clip 旧的css也提供了一个clip属性,但这个属性只能用于裁剪一个矩形,其本质是根据overflow:hidden隐藏掉了裁剪外的区域,使用: clip:rect(<top>,& ...
- jQuery get() 函数
get() 函数 用于获取当前jQueryobject对象所匹配的DOM元素 语法 jQueryobject.get(index)//因为在JQuery中.很多时候和[]等价所以jQueryobjec ...
- div中的内容水平垂直居中
1. div高度自适应的情况 div在不设置高度的时候,会被里面的内容撑开,内容自动填充在div中,无论是一行内容还是多行内容,此时不需要设置垂直居中,内容自动在中间的, 想要看的更直观些,只需要加上 ...
- spring cloud资料
https://segmentfault.com/a/1190000006216281 http://git.oschina.net/zhou666/spring-cloud-7simple zuul ...