网络编程
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 分块记录的更多相关文章

  1. poj 1141 Brackets Sequence 区间dp,分块记录

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35049   Accepted: 101 ...

  2. BZOJ 3744 Gty的妹子序列

    Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树上掉落下来了许多妹子,他发现 她们排成了一个序 ...

  3. 【Django】 初步学习

    这个系列(或者成不了一个系列..)预计会全程参考Vamei様的Django系列,膜一发.说句题外话,其实更加崇拜像Vamei那样的能够玩转生活.各个领域都能取得不小成就的人. [Django] ■ 概 ...

  4. 1002: 当不成勇者的Water只好去下棋了---课程作业---图的填色

    1002: 当不成勇者的Water只好去下棋了 Time Limit: 1 Sec  Memory Limit: 128 MB Description 由于魔王BOSS躲起来了,说好要当勇者的Wate ...

  5. Web Service 附件技术的发展及演变

    Web Service 通常将业务数据封装在 SOAP 主体或者 SOAP 消息附件中进行传输,这些附件往往采用 Base64 编码二进制方式进行封装,这将大大增加待传输的数据量,消耗比较长的编码时间 ...

  6. php 大数组 foreach 循环嵌套的性能优化

    前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒! 这麽慢,然后在代码中分块记录它 ...

  7. Codeforces 刷水记录

    Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...

  8. Codeforces 307 div2 E.GukiZ and GukiZiana 分块

    time limit per test 10 seconds memory limit per test 256 megabytes input standard input output stand ...

  9. CodeChef COUNTARI Arithmetic Progressions(分块 + FFT)

    题目 Source http://vjudge.net/problem/142058 Description Given N integers A1, A2, …. AN, Dexter wants ...

随机推荐

  1. "rel=nofollow"属性

    nofollow是HTML元标签(meta)的content属性和链接标签(a)的rel属性的一个值,告诉机器(爬虫)无需追踪目标页,为了对抗blogspam(博客垃圾留言信息),Google推荐使用 ...

  2. 什么是原生的javascript

    在www.cocos.com的cocos2d-js的介绍中写道“Cocos2d-JS 是跨全平台的游戏引擎,采用原生JavaScript语言,可发布到包括Web平台,iOS,Android,Windo ...

  3. Linux系统下配置Tomcat

    1.将下载好的tomcat文件拷贝至/usr/java文件夹中: cp apache-tomcat-7.0.72.tar.gz /usr/java 2.进入/usr/java文件夹: cd /usr/ ...

  4. LogConfigruration

    import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import ...

  5. 【转】 C++模板详解

    C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有 ...

  6. 解决首次访问jenkins,输入默认密码之后,一直卡住问题

    简介   安装系统:centos6.5 安装方式:在官网中下载jenkins.war,放到tomcat根目录下的webapps中,启动tomcat(还有一种yum在线安装的方式) 1.首次访问,出现如 ...

  7. mongo 相关命令

    mongo导入数据: 1. 先进入找到mongo 安装目录 执行 ./mongo 进入mongo 2. mongorestore -u 用户名 -p 密码 -d 数据库 —drop 文件存在路径 显示 ...

  8. Java数组扩容算法及Java对它的应用

    1)Java数组对象的大小是固定不变的,数组对象是不可扩容的.利用数组复制方法可以变通的实现数组扩容.System.arraycopy()可以复制数组.Arrays.copyOf()可以简便的创建数组 ...

  9. python中在同一个位置输出数据

    import sys, time def print_data(): for i in range(5): sys.stdout.write(str(i) + '\r') time.sleep(1) ...

  10. SQLPlus 在连接时通常有四种方式

    1. sqlplus / as sysdba    操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态.比如我们想要启动数据库就可以用这种方式进入    sqlpl ...