Python中的Tcp协议的应用之Tcp服务端程序开发
TCP通信协议是面向连接的可靠的网络通信协议。
网络间想要进行数据传输必须要用到socket,socket翻译过来叫做套接字,其主要作用是不同设备或同一台设备之间的进程通信工具。
Python中的Tcp协议应用如下:
我们都知道Tcp是面相连接通信协议,所以Tcp服务端需要结合网络调试助手进行接受及测试数据传输。
Python中使用Socket的流程:
1.导入socket模块
2.创建socket对象
3.设置端口复用,主要用来解决结束服务端程序后的端口占用问题。
4.绑定端口
5.设置监听
6.等待服务端连接,当客户端与服务端连接成功后会返回一个新的socket,使用新的socket来进行通信。
7.接收数据
8.发送数据
9.关闭socket套接字,注意服务端套接字不要轻易关闭,一旦关闭,表示服务端不再提供服务。
# 1. 导入模块
import socket if __name__ == '__main__':
# 2. 创建tcp服务端套接字
# 2.1 AF_INET 表示ipv4的地址类型, AF_INET6: 表示ipv6的地址类型
# 2.2 SOCK_STREAM 表示tcp协议, SOCK_DGRAM 表示udp协议
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3. 绑定端口号
# ("服务器的ip地址", 8000), 服务器的ip地址一般不需要指定,本机的任意一个ip都可以
# 设置端口号复用,保证服务端程序退出端口号立即释放
# 1. SOL_SOCKET 表示当前套接字
# 2. SO_REUSEADDR 表示端口号复用选项
# 3. True: 表示开启端口号复用选项
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
tcp_server_socket.bind(("", 9000))
# 4. 设置监听
# 128: 表示最大等待的连接数, 这是在单任务的情况下。
tcp_server_socket.listen(128)
# 5. 等待接受客户端的连接请求
new_socket, ip_port = tcp_server_socket.accept()
print("连接建立成功:", ip_port)
# 代码执行到此,说明连接建立成功,如果没有客户端和服务端建立连接,代码会阻塞到accept方法这个地方
# 6. 接收数据, recv 会阻塞,也就是说等着接收客户端发送的数据,收到客户端的数据解阻塞
recv_data = new_socket.recv(1024)
print("数据长度为:", len(recv_data))
# 对字节数据进行解码
recv_content = recv_data.decode("utf-8")
print("接收客户端的数据为:", recv_content, ip_port) # 7. 发送数据
send_content = "您好,问题正在处理中..."
# 对字符串进行编码转成字节
send_data = send_content.encode("utf-8")
new_socket.send(send_data) # 8. 关闭连接
# 和客户端通信完毕
new_socket.close()
# 停止建立连接的服务
tcp_server_socket.close()
Python中的Tcp协议的应用之Tcp服务端程序开发的更多相关文章
- 03-案例——多任务版TCP服务端程序开发
案例——多任务版TCP服务端程序开发 1. 需求 目前我们开发的TCP服务端程序只能服务于一个客户端,如何开发一个多任务版的TCP服务端程序能够服务于多个客户端呢?完成多任务,可以使用线程 ...
- Python中的端口协议之基于UDP协议的通信传输
UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) 3.利用socketserver模块实现udp传输协议的并 ...
- .net core 和 WPF 开发升讯威在线客服与营销系统:使用 TCP协议 实现稳定的客服端
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
- Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.
Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: 专业理解: socket是应用层与TCP/IP ...
- websocketj--随时随地在Web浏览器中操作你的服务端程序
0 - 有没有觉得Linux标准终端界面输入输出枯燥无味? 1 - 什么?vmstat命令的输出数据不直观?有没有想过能够可视化该命令的输出? 2 - 尝试过用浏览器操作Windows中的cmd吗? ...
- TCP/IP网络编程之多进程服务端(二)
信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
演示TCP的传输的客户端和服务端的互访 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息. 客户端: 1.建立Socket服务,指定要连接方朵和端口 2.获取Socket流中的输出流,将数 ...
- TCP/IP网络编程之多线程服务端的实现(二)
线程存在的问题和临界区 上一章TCP/IP网络编程之多线程服务端的实现(一)的thread4.c中,我们发现多线程对同一变量进行加减,最后的结果居然不是我们预料之内的.其实,如果多执行几次程序,会发现 ...
- 第5章-unix网络编程 TCP/服务端程序示例
这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的 客户端代码 #include "unp. ...
随机推荐
- 『题解』Codeforces9D How many trees?
更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description In one very old text file there was wr ...
- salesforce lightning零基础学习(十四) Toast 浅入浅出
本篇参考: https://developer.salesforce.com/docs/component-library/bundle/force:showToast/specification h ...
- linux常用的命令解释
1.man命令的操作按键: 按键 用处 空格键 向下翻一页. [Page Down] 向下翻一页. [Page Up] 向上翻一页. [HOME] 直接前往首页. [END] 直接前往尾页. /关键词 ...
- zabbix 4.2 的安装和设置(mysql57----centos7)
一.安装RPM [root@localhost ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release ...
- layer弹框的上面各个属性 -可配置
<script type="text/javascript"> 12 //eg 13 layer.open({ 14 title:"标题信息提示", ...
- ios遇到的坑
总结体会:很多ios兼容性问题都是由于body设置了height:100% ios中input输入不了 在ios中margin属性不起作用 设置html body的高度为百分比时,margin-bot ...
- 产品分析:华为短信APP体验的问题和建议
- 用正则表达式获取URL中的查询参数
总结获取url中查询参数的两种方式 通过正则表达式获取单个参数 url中的所有查询参数可以通过 window.location.search 字段获取,以字符串的形式返回.并有固定的格式 ?param ...
- SpringBoot 源码解析 (六)----- Spring Boot的核心能力 - 内置Servlet容器源码分析(Tomcat)
Spring Boot默认使用Tomcat作为嵌入式的Servlet容器,只要引入了spring-boot-start-web依赖,则默认是用Tomcat作为Servlet容器: <depend ...
- thinkphp6.0 开启调试模式以及Driver [Think] not supported
thinkphp6.0 开启调试模式 首先确认自己是通过 composer 进行的下载,然后修改系统目录下的 .example.env 为 .env 文件 修改 config->app.php ...