TCP通信协议是面向连接的可靠的网络通信协议。
网络间想要进行数据传输必须要用到socket。
1
#
1. 导入模块
2
import
socket
3
4
if
__name__ == ‘__main__‘:
5# 2. 创建tcp服务端套接字 6# 2.1 AF_INET 表示ipv4的地址类型, AF_INET6: 表示ipv6的地址类型 7# 2.2 SOCK_STREAM 表示tcp协议, SOCK_DGRAM 表示udp协议 8 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
9# 3. 绑定端口号10# ("服务器的ip地址", 8000), 服务器的ip地址一般不需要指定,本机的任意一个ip都可以11# 设置端口号复用,保证服务端程序退出端口号立即释放12# 1. SOL_SOCKET 表示当前套接字13# 2. SO_REUSEADDR 表示端口号复用选项14# 3. True: 表示开启端口号复用选项15 tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
16 tcp_server_socket.bind(("", 9000))
17# 4. 设置监听18# 128: 表示最大等待的连接数, 这是在单任务的情况下。19 tcp_server_socket.listen(128)
20# 5. 等待接受客户端的连接请求21 new_socket, ip_port = tcp_server_socket.accept()
22print("连接建立成功:", ip_port)
23# 代码执行到此,说明连接建立成功,如果没有客户端和服务端建立连接,代码会阻塞到accept方法这个地方24# 6. 接收数据, recv 会阻塞,也就是说等着接收客户端发送的数据,收到客户端的数据解阻塞25 recv_data = new_socket.recv(1024)
26print("数据长度为:", len(recv_data))
27# 对字节数据进行解码28 recv_content = recv_data.decode("utf-8")
29print("接收客户端的数据为:", recv_content, ip_port)
3031# 7. 发送数据32 send_content = "您好,问题正在处理中..."33# 对字符串进行编码转成字节34 send_data = send_content.encode("utf-8")
35 new_socket.send(send_data)
3637# 8. 关闭连接38# 和客户端通信完毕39 new_socket.close()
40# 停止建立连接的服务41 tcp_server_socket.close()
原文:https://www.cnblogs.com/chao666/p/12002095.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!