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()

最新文章

  1. ABP理论学习之缓存Caching
  2. PHP+MySQL+Easyui tree菜单从后台加载json数据(一)
  3. javascrpt事件
  4. firefox的plugin-container进程关闭方法
  5. html5拖拽实现
  6. php基础03:数据类型
  7. 对于JVM内存配置参数
  8. matlab(数组、矩阵)
  9. Linux系统下如何修改主机名
  10. jQuery之位置
  11. 【Remoting-4】
  12. Linux共享wifi给Android手机
  13. where id in用 order by field 保持排序
  14. Flash真的老了,HTML5将取代其地位
  15. [python]mysql数据缓存到redis中 取出时候编码问题
  16. golang命令行参数
  17. Calling Custom Actions from JavaScript
  18. 网络:OSPF理解
  19. 从urllib2的内存泄露看python的GC python引用计数 对象的引用数 循环引用
  20. ElasticSearch 聚合函数

热门文章

  1. Project Euler 53: Combinatoric selections
  2. jquery鼠标点击穿透的解决方法
  3. pip的简单用法
  4. 彻底搞懂 netty 线程模型
  5. markdown文档
  6. Download-学习资源下载
  7. tornado的使用-上传图片
  8. nyoj 46-最少乘法次数 (递推)
  9. nyoj 273-字母小游戏 (getline(cin, string))
  10. 力扣(LeetCode)验证回文字符串II 个人题解