![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
BOBO_GO
每天进步多一点
展开
-
基于TCP/UDP的黏包
#serverimport socketsk = socket.socket()sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)sk.bind(('192.168.21.36',9000))sk.listen()while True: conn,addr = sk.accept() # 接收连接 三次握手conn ...原创 2019-04-28 21:10:57 · 149 阅读 · 0 评论 -
使用多进程实现socket服务端并发的效果
clientimport socketsk = socket.socket()sk.connect(('127.0.0.1',8080))msg = sk.recv(1024).decode('utf-8')print(msg)msg2 = input('>>>').encode('utf-8')sk.send(msg2)sk.close()serveri...原创 2019-05-12 18:24:04 · 192 阅读 · 0 评论 -
进程池的返回值
#apply同步from multiprocessing import Pooldef func(i): return i*iif __name__ == '__main__': p = Pool(5) for i in range(10): res = p.apply(func,args=(i,)) # apply的结果就是func的返回值 ...原创 2019-05-21 22:12:50 · 320 阅读 · 0 评论 -
进程池的回调函数
# 回调函数import osfrom multiprocessing import Pooldef func1(n): print('in func1',os.getpid()) return n*ndef func2(nn): print('in func2',os.getpid()) print(nn)if __name__ == '__main...原创 2019-05-21 22:24:38 · 179 阅读 · 0 评论 -
进程池爬虫
import requestsfrom urllib.request import urlopenfrom multiprocessing import Pool# 200 网页正常的返回# 404 网页找不到# 502 504def get(url): response = requests.get(url) if response.status_code == 20...原创 2019-05-21 23:58:29 · 262 阅读 · 0 评论 -
线程
import osimport timefrom threading import Thread# 多线程并发def func(a,b): global g g = 0 print(g,os.getpid())g = 100t_lst = []for i in range(10): t = Thread(target=func,args=(i,5))...原创 2019-05-22 01:07:32 · 108 阅读 · 0 评论 -
多线程socket聊天
import socketsk = socket.socket()sk.connect(('127.0.0.1',8080))msg = sk.recv(1024)print(msg)inp = input('>>> ').encode('utf-8')sk.send(inp)sk.close()#serverimport socketfrom thre...原创 2019-05-22 01:09:09 · 187 阅读 · 0 评论 -
守护进程
# 子进程 -- > 守护进程import timefrom multiprocessing import Processdef func(): while True: time.sleep(0.2) print('我还活着')def func2(): print('in func2 start') time.sleep(8...原创 2019-05-12 23:25:09 · 94 阅读 · 0 评论 -
进程锁
# 锁# 火车票import jsonimport timefrom multiprocessing import Processfrom multiprocessing import Lock# def show(i):# with open('ticket') as f:# dic = json.load(f)# print('余票: %s...原创 2019-05-12 23:30:30 · 174 阅读 · 0 评论 -
进程之间的数据共享
进程之间的数据共享Manager# from multiprocessing import Manager,Process# def main(dic):# dic['count'] -= 1# print(dic)## if __name__ == '__main__':# m = Manager()# dic=m.dict({'count':1...原创 2019-05-17 13:58:50 · 559 阅读 · 0 评论 -
守护线程
import timefrom threading import Threaddef func1(): while True: print('*'*10) time.sleep(1)def func2(): print('in func2') time.sleep(2)#影响执行的时间长短t = Thread(target=func...原创 2019-05-22 19:58:23 · 89 阅读 · 0 评论 -
信号量(线程)
import timefrom threading import Semaphore,Threaddef func(sem,a,b): sem.acquire() time.sleep(1) print(a+b) sem.release()sem = Semaphore(4)for i in range(10): t = Thread(target...原创 2019-05-22 21:15:38 · 115 阅读 · 0 评论 -
线程锁
import timefrom threading import Lock,Thread# Lock 互斥锁def func(lock): global n lock.acquire() temp = n time.sleep(0.2) n = temp - 1 lock.release()n = 10t_lst = []lock = ...原创 2019-05-22 20:40:33 · 123 阅读 · 0 评论 -
条件
from threading import Thread,Conditiondef func(con,i): con.acquire() con.wait() # 等钥匙 print('在第%s个循环里'%i) con.release()con = Condition()for i in range(10): Thread(target=func,ar...原创 2019-05-23 00:49:09 · 131 阅读 · 0 评论 -
定时器
import timefrom threading import Timerdef func(): print('时间同步') #1-3while True: t = Timer(5,func).start() # 非阻塞的 time.sleep(5)原创 2019-05-23 00:50:21 · 84 阅读 · 0 评论 -
队列
# queueimport queueq = queue.Queue() # 队列 先进先出# q.put()# q.get()# q.put_nowait()# q.get_nowait()# q = queue.LifoQueue() # 栈 先进后出# q.put(1)# q.put(2)# q.put(3)# print(q.get())# print(q....原创 2019-05-23 01:03:50 · 159 阅读 · 0 评论 -
线程池
import timefrom concurrent.futures import ThreadPoolExecutordef func(n): time.sleep(2) print(n) return n*ndef call_back(m): print('结果是 %s'%m.result())tpool = ThreadPoolExecutor(m...原创 2019-05-23 09:08:51 · 92 阅读 · 0 评论 -
进程池异步socket
#clientimport socketsk = socket.socket()sk.connect(('127.0.0.1',8080))ret = sk.recv(1024).decode('utf-8')print(ret)msg = input('>>>').encode('utf-8')sk.send(msg)sk.close()#serv...原创 2019-05-21 21:17:22 · 124 阅读 · 0 评论 -
进程池
# 为什么会有进程池的概念 # 效率 # 每开启进程,开启属于这个进程的内存空间 # 寄存器 堆栈 文件 # 进程过多 操作系统的调度# 进程池 # python中的 先创建一个属于进程的池子 # 这个池子指定能存放n个进程 # 先讲这些进程创建好# 更高级的进程池 # n,m # 3 三个进程 # ...原创 2019-05-21 20:13:07 · 101 阅读 · 0 评论 -
上传下载作业(socket)
clientimport osimport jsonimport socketsk = socket.socket()sk.connect(('127.0.0.1',8080))def get_filename(file_path): filename = os.path.basename(file_path) return filename#选择 操作op...原创 2019-04-29 00:46:23 · 173 阅读 · 0 评论 -
struct模块解决黏包
###serverimport jsonimport structimport socketsk = socket.socket()sk.bind(('127.0.0.1',8080))sk.listen()conn,addr = sk.accept()dic_len = conn.recv(4) # 4个字节 数字的大小dic_len = struct.unpack('i...原创 2019-04-29 02:08:36 · 120 阅读 · 0 评论 -
socket
serverimport socketsk=socket.socket() #买手机# sk.bind('ip','port') 样板sk.bind(('127.0.0.1',8080)) #绑卡sk.listen() #监听 等着有人打嗲话conn,addr=sk.accept() #接收电话 conn连接,addr地址ret=conn.recv(1024)...原创 2019-04-24 14:36:53 · 433 阅读 · 0 评论 -
subprocess模块
# server 下发命令# client 执行命令# ssh协议# import os# ret = os.popen('ls').read()# print(ret)import subprocess# 内置模块 和os模块的功能有相似之处# 能执行操作系统的命令的功能ret = subprocess.Popen('dir', # 要执行的命令 ...原创 2019-04-29 14:01:49 · 103 阅读 · 0 评论 -
UDP网络程序
serverimport socketsk = socket.socket(type=socket.SOCK_DGRAM) # 建立一个socket对象,# 指定以UDP协议的形式来连接sk.bind(('127.0.0.1',8080))# 指定服务的地址msg,addr = sk.recvfrom(1024) # 接收消息,发送端的地址print(msg,addr)sk.s...原创 2019-04-25 00:28:48 · 92 阅读 · 0 评论 -
时间程序(基于UDP)
server# 需求 # 写一个时间同步的服务器 # 服务端接收请求 # 按照client端发送的时间格式,将服务器时间转换成对应格式 # 发送给客户端import timeimport socketsk = socket.socket(type=socket.SOCK_DGRAM)sk.bind(('127.0.0.1',9000))while Tr...原创 2019-04-25 00:49:45 · 480 阅读 · 0 评论 -
网络基础
TCP与UDP的区别|浏览:15608|更新:2013-06-28 02:07|标签:软件开发 TCP(传输控制协议):1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效流控,全双工操作(数据在两个方向上能同时传递),多路复用服务,是面向连接,端到端的传输;2)面...原创 2019-04-29 21:01:53 · 78 阅读 · 0 评论 -
socketserver模块
# tcp # 粘包 # 在同一时间只能处理一个客户端的请求import socketsk = socket.socket()sk.connect(('127.0.0.1',9000))print(sk.recv(1024))msg = input('>>>').encode('utf-8')sk.send(msg)sk.close()#...原创 2019-04-29 22:53:33 · 138 阅读 · 0 评论 -
验证客户端连接的合法性
hams#clientimport socketimport hmacsk = socket.socket()sk.connect(('127.0.0.1',8090))recv = sk.recv(1024)# 用和server端相同的手法对这个字符串进行摘要secret_key = b'egg' # 密钥hmac_obj = hmac.new(secret_key,rec...原创 2019-04-29 23:09:30 · 478 阅读 · 0 评论 -
信号量(进程)
# 多进程中的组件# ktv# 4个# 一套资源 同一时间 只能被n个人访问# 某一段代码 同一时间 只能被n个进程执行import timeimport randomfrom multiprocessing import Processfrom multiprocessing import Semaphore# sem = Semaphore(4)# sem.acquir...原创 2019-05-13 20:21:06 · 95 阅读 · 0 评论 -
事件
# 通过一个信号 来控制 多个进程 同时 执行或者阻塞# 事件# from multiprocessing import Event# 一个信号可以使所有的进程都进入阻塞状态# 也可以控制所有的进程解除阻塞# 一个事件被创建之后,默认是阻塞状态# e = Event() # 创建了一个事件# print(e.is_set()) # 查看一个事件的状态,默认被设置成阻塞# ...原创 2019-05-13 22:18:34 · 57 阅读 · 0 评论 -
队列
# q.put(1)# q.put(2)# q.put(3)# q.put(4)# q.put(5)# print(q.full()) # 队列是否满了# print(q.get())# print(q.get())# print(q.get())# print(q.get())# print(q.get())# print(q.empty())# while True...原创 2019-05-13 22:48:06 · 83 阅读 · 0 评论 -
生产者消费者模型
# 队列# 生产者消费者模型# 生产者 进程# 消费者 进程import timeimport randomfrom multiprocessing import Process,Queuedef consumer(q,name): while True: food = q.get() if food is None: ...原创 2019-05-14 00:37:34 · 70 阅读 · 0 评论 -
管道
from multiprocessing import Process ,Pipedef fun(conn1): while True: msg=conn1.recv() if msg is None:break print(msg)if __name__=="__main__": conn1,conn2=Pipe() P...原创 2019-05-15 23:59:47 · 89 阅读 · 0 评论 -
进程
#一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序#二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个 cpu中的...原创 2019-05-12 12:40:36 · 67 阅读 · 0 评论