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 ...
随机推荐
- android 命令行
android create avd --target --name cupcake 建立模拟器: $ android create avd --target 2 --name c ...
- 【哈希表】CodeVs1230元素查找
一.写在前面 哈希表(Hash Table),又称散列表,是一种可以快速处理插入和查询操作的数据结构.哈希表体现着函数映射的思想,它将数据与其存储位置通过某种函数联系起来,其在查询时的高效性也体现在这 ...
- 理解#define offsetof(struct_t,member) ((int)&((struct_t *)0)->member)
#define offsetof(struct_t,member) ((int)&((struct_t *)0)->member) 这个东西很多人应该知道: offsetof是用来判断结 ...
- alert效果
<!DOCTYPE html> <head> <meta charset="utf-8" /> <title>拉伸效果</ti ...
- -[NSBundle initWithURL:]: nil URL argument'
今天早上同事突然跟我说趣拍的SDK不能用了,一调用就crash,我一听就纳了闷了,原来好好的啊. 然后就开始查呗,马上就要上线了,不搞好,老大会不会杀了我... 搞个全局断点,就停在了一堆我看不懂的界 ...
- 为什么当多个inline-block的div中,如果有的div没有内容而有的div有内容,有内容的会下沉?
为什么当多个inline-block的div中,如果有的div没有内容而有的div有内容,有内容的会下沉? 就像这样 两个div高度相同,第二个我写了一个1当作 有内容吧,它就下沉了... 奇怪... ...
- 双模蓝牙CC2564调试笔记
1.CC256X Testing Guide 官方文档WIKI地址:http://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Devi ...
- language model —— basic model 语言模型之基础模型
一.发展 起源:统计语言模型起源于 Ponte 和 Croft 在 1998年的 SIGIR上发表的论文 应用:语言模型的应用很多: corsslingual retrieval distribute ...
- Javascript 知识点整理
1.十进制和十六进制相互转换 /* 十六进制转十进制 */ var test = FF; var x = parseInt(test ,16); //方法一 x = parseInt('0x'+tes ...
- [SoapUI] 在SoapUI里获取Excel中多行数据并存入List
ArrayList<ArrayList<String>> getCellValuesH( String filePath, String sheetName,int tr1,i ...