将socket通信实现多进程
我们知道,使用TCP协议需要提前建立连接,这样就只能一对一的传输,但是这样感觉十分单一,如果实现一个服务器能同时和多个客户端同信了?
这里就需要用到多线程。
处理的不同之处就在于:每一个接进来的客户都会创建一个新的进程,这样就能够做到互不干扰
#服务端
from socket import *
from multiprocessing import Process #导入模块 server = socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
server.bind(('127.0.0.1',8130))
server.listen(5) def func(conn,addr):
while True:
try:
ret = conn.recv(1024)
if not ret:break #liunx下防止客户端断掉之后依旧发送空值
print(ret.decode('utf-8'))
conn.send(ret.upper())
except ConnectionResetError:
break
if __name__ == "__main__":
while True:
conn,addr = server.accept() #接进来一个,创建一个子进程
print("收到来自%s的访问,端口号为%s"% (addr[0],addr[1]))
p = Process(target = func,args = (conn,addr))
p.start()
客户端(基本没有变化):
#客户端
from socket import *
client = socket(AF_INET,SOCK_STREAM)
client.connect(('127.0.0.1',8130))
while True:
data = input(">>>").strip()
if len(data) == 0:continue
client.send(data.encode('utf-8'))
ret = client.recv(1024)
print(ret.decode('utf-8'))
结果:
收到来自127.0.0.1的访问,端口号为56225
rtyu
收到来自127.0.0.1的访问,端口号为56226
fghjk
将socket通信实现多进程的更多相关文章
- Socket通信的Python实现
Python中实现socket通信,socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务 端用有很多模块可以使用.下面就说一下服务端可使用的模块. 模 ...
- 将socket通信变成并发的方式
一 利用multiprocessing模块,开启多进程,实现socket通信并发 1. 开启子进程的两种方式 import time import random from multiprocessin ...
- 并发编程~~~多线程~~~计算密集型 / IO密集型的效率, 多线程实现socket通信
一 验证计算密集型 / IO密集型的效率 IO密集型: IO密集型: 单个进程的多线程的并发效率高. 计算密集型: 计算密集型: 多进程的并发并行效率高. 二 多线程实现socket通信 服务器端: ...
- day36——死锁、递归锁、信号量、GIL、多线程实现socket通信、线程池和进程池
day36 死锁现象与递归锁 死锁现象 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这 ...
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
- php简单实现socket通信
socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...
- Socket通信类
package com.imooc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- socket通信
socket通信 一:socket基于Tcp连接,数据传输有保证 二:socket连接的建立过程: 1:服务器监听 2:客户端发出请求 3:建立连接 4:通信 三:一个简单的例子:服务器端每隔一段时间 ...
随机推荐
- Linux基础学习4
SUDO sudo 执行的重点是:『 能否使用 sudo 必须要看 /etc/sudoers 的设定值, 而可使用 sudo者是透过输入用户自己的密码来执行后续的指令串』由于能否使用与/etc/sud ...
- tomcat部署不成功 Deployment failure on Tomcat 6.x. Could not copy all resources to
解决办法: tomcat服务并没有启动.上网搜索之后发现和大家犯的是一个毛病,原来工程中我引了一个包,后来这个包被我给删除了,但是因为已经发布过这个工程了,所以classpath中就有这个包名了,这样 ...
- goreplay使用
最新版的发布公告:https://leonsbox.com/goreplay-v0-16-and-4th-anniversary-5408b1fd72e0 主要提到:中间件.报文解压.从kafka读取 ...
- rsync的几则tips(渗透技巧)
转自91ri 关于rsync rsync(remote synchronize)——Linux下实现远程同步功能的软件,能同步更新两处计算机的文件及目录.在同步文件时,可以保持源文件的权限.时间.软硬 ...
- php猴子吃桃
<?php header("content-type:text/html;charset=utf-8"); /* 有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个! 以后 ...
- Sereja and Array-数组操作或者线段树或树状数组
CodeForces - 315B Sereja and Array Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I ...
- window.close关闭当前页面
浏览器处于安全策略考虑,只允许Javascript关闭由javascript打开的页面,为了用js关闭当前窗口,我们可以这么考虑,这也是最常用的做法. <a href="javascr ...
- 一起学android之怎样设置TextView中不同字段的字体颜色(22)
在这里先看看效果图: OK,有时候,在我们的项目中会要求TextView中文本有一部分的字体颜色不一样.这时我们应该使用 SpannableStringBuilder这个工具类,当然这个类的功能非常强 ...
- 已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。
// ConsoleApplication12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" // ConsoleApplication1 ...
- PowerBuilder -- 数字金额大写
//==================================================================== // 事件: .pub_fc_change_number( ...