python网络编程TCP服务多客户端的服务端开发
#服务多客户端TCP服务端开发 2 #方法说明
3 """
4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进
行绑定,表示本机的任何一个ip地址都行,port是端口号
5 listen(backlog)表示设置监听,backlog参数表示最大等待连接的> 个数
6 accept()表示等待接受客户端的连接请求
7 """
8 import socket
9 import threading
10 #处理客户端请求
11 def client_socket(ip_port,new_client):#子线程来完成
12 print("客户端的ip和端口号为:",ip_port)
13 while True:
14 data = new_client.recv(1024)
15 if data:
16 #接受客户端的收据
17 #对二进制数据进行解码
18 recv_data = data.decode("utf-8")
19 print("接收客户端的数据为:",recv_data)
20 #发送数据到客户端
21 client_data = "最伟大"
22 send_data = client_data.encode("utf-8")
23 new_client.send(send_data)
24 else:
25 print("客户端下线了:",ip_port)
26 break
27 #关闭服务与客户端套接字,表示终止服务端与客户端通信
28 new_client.close()
29
30 if __name__ == "__main__":
31 #创建服务端套接字对象
tcp_server_socket = socket.socket(socket.AF_INET,socket .SOCK_STREAM)
33 #绑定端口号
34 #ip地址一般不写死,只要是本机电脑的任何一个ip地址都行
35 tcp_server_socket.bind(("",8080))
36 #设置端口号复用:服务端程序退出后端口立即释放
37 #1.socket.SOL_SOCKET:表示当前套接字
38 #2.socket.SO_REUSEADDR:表示复用端口号的选项
39 #3.True:确定复用
40 tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
41 #设置监听
42 tcp_server_socket.listen(128)
43 #等待客户端的连接请求
44 #注意点:每次当客户端和服务端建立连接成功会返回一个新的> 套接字new_client
45 #tcp_server_socket套接字只负责接受连接请求,收发消息只> 用返回的新套接字
46 while True:
47 new_client,ip_port = tcp_server_socket.accept()
48 #客户端和服务端建立连接成功,创建子线程,让子线程专
门负责接受客户端消息
49 sub_thread = threading.Thread(target = client_socket,args = (ip_port,new_client))
50 #设置守护主线程,主线程退出子线程直接销毁
51 sub_thread.setDaemon(True)
52 #关闭服务端套接字
53 sub_thread.start()
54 #服务端需要一直运行
55 #tcp_server_socket.close()
实现多任务可以用进程或者线程来来完成
但开辟线程对资源的消耗比线程大,所以我们选择创建子线程来完成服务器服务于多客户端
python网络编程TCP服务多客户端的服务端开发的更多相关文章
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- python网络编程 - tcp
网络编程 低级别的网络服务 高级别的网络服务 socket又称“套接字”,应用程序通过“套接字”向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. tcp 传输控制协议(Tra ...
- 网络编程TCP/IP实现客户端与客户端聊天
一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/I ...
- python 网络编程 -- Tcp协议
Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 大多数连接都是可靠 ...
- python网络编程--TCP连接的三次握手(三报文握手)与四次挥手
一.TCP连接 运输连接有三个阶段: 连接建立.数据传送和连接释放. 在TCP连接建立过程中要解决以下三个问题: 1,要使每一方能够确知对方的存在. 2.要允许双方协商一些参数(如最大窗口之,是否使用 ...
- 网络编程_TCP协议_客户端与服务端
客户端发数据到服务端 Tcp传输,客户端建立的过程. 1,创建tcp客户端socket服务.使用的是Socket对象.建议该对象一创建就明确目的地.要连接的主机. 2,如果连接建立成功,说明数据传输通 ...
- [Python 网络编程] TCP编程/群聊服务端 (二)
群聊服务端 需求分析: 1. 群聊服务端需支持启动和停止(清理资源); 2. 可以接收客户端的连接; 接收客户端发来的数据 3. 可以将每条信息分发到所有客户端 1) 先搭架子: #TCP Serve ...
- python网络编程--TCP客户端的开发
#导入socket模块 2 import socket 3 #参数说明 4 """ 5 socket类的介绍 6 创建客户端socket对象 7 socket.socke ...
- Python网络编程基础 ❷ 基于upd的socket服务 TCP黏包现象
TCP的长连接 基于upd的socket服务 TCP黏包现象
随机推荐
- POJ 1742 Coins 【可行性背包】【非原创】
People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony ...
- HTML Custom Elements & valid name
HTML Custom Elements & valid name valid custom element name https://html.spec.whatwg.org/multipa ...
- macOS & Nginx
macOS & Nginx ngnix # 使用 brew 安装(如果没有 brew 命令,需要自行安装 brew) $ brew install nginx $ nginx -h # 查看 ...
- uniapp 创建简单的tabs
tabs组件 <template> <view class="tabs"> <view class="bar" :style=&q ...
- VAST生态驱动下,NGK算力增量效应初现!
VAST维萨币上线的消息放出来之后,NGK算力的价格一直在上涨,其实这也不难理解,因为VAST维萨币需要VAST星光值进行兑换,VAST星光值又需要SPC算力福利代币进行挖矿释放的,SPC算力福利代币 ...
- NGK与AOFEX交易所达成战略合作,BGV即将上线A网!
据NGK官方消息,NGK官方已经与英国伦敦知名交易所AOFEX交易所达成战略合作,将于12月2日全球首发BGV,现已开启充值服务.同时,在12月3日15:00,用户可以参与BGV交易:在12月4日15 ...
- SpringBoot进阶教程(七十一)详解Prometheus+Grafana
随着容器技术的迅速发展,Kubernetes已然成为大家追捧的容器集群管理系统.Prometheus作为生态圈Cloud Native Computing Foundation(简称:CNCF)中的重 ...
- ipv4ipv6 地址字符串表示最大长度
1 for IPV4 #define INET_ADDRSTRLEN 16 111.112.113.114 32位IPV4地址,使用10进制+句点表示时,所占用的char数组的长度为16,其中包括最后 ...
- web项目中各工具的作用
一.HTML:用于搭建基础网页,展示网页的内容 Hyper Text Markup Language 超文本标记语言 ,是最基础的网页开发语言. * 超文本: * 超文本是用超链接的方法,将各种不同空 ...
- 使用hive增量更新
目录 1.增量更新 2.对第一种情况 2.1.准备工作 2.2.更新数据 3.对第二种情况 3.1.准备工作 3.2.方法1 3.3.方法2 参考文末文章,加上自己的理解. 1.增量更新 有一个 ba ...