千家信息网

Python基于socket怎么实现TCP客户端和服务端

发表于:2024-09-24 作者:千家信息网编辑
千家信息网最后更新 2024年09月24日,这篇文章主要讲解了"Python基于socket怎么实现TCP客户端和服务端",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python基于socket
千家信息网最后更新 2024年09月24日Python基于socket怎么实现TCP客户端和服务端

这篇文章主要讲解了"Python基于socket怎么实现TCP客户端和服务端",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python基于socket怎么实现TCP客户端和服务端"吧!

一、基于socket实现的TCP客户端

import socket # 建立socket对象# 参数一表示IP地址类型(AF_INET为IPV4,AF_INET6为IPV6),参数二表示连接的类型(SOCK_STREAM表示TCP形式,SOCK_DGRAM表示UDP形式)client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # 代表(ipv4,TCP) # 连接服务器(元组中填目标ip地址和端口号)client_socket.connect(('127.0.0.1',7777))# 准备数据,需要转换为二进制数据,encode()中填写的是本地的字符串编码格式,mac、linux填utf-8data='hello'.encode('gbk')# 向服务器发送数据client_socket.send(data)# 接收数据,必须要指定接收数据的大小,单位字节,最大4096,即4krecv_data=client_socket.recv(1024)# 接收的数据要进行decode()解码,发送的时候用啥编码就填啥编码recv_data=recv_data.decode('gbk')print(recv_data)# 关闭连接client_socket.close()

二、基于socket实现的TCP服务端

import socket# 建立socket对象server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 如果服务器是一次性的,如果服务器结束后马上重新启动会出现一个错误,原因是地址和端口没有被释放# OSError: [Errno 48] Address already in use# 如果想马上释放,要设置一下socket选项server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)# 绑定IP和端口,如果在绑定IP时没有给定IP,默认是绑定本地IPserver_socket.bind(('',7777))# 设置监听(最大监听数),设置完后服务端会进入被动模式,不能主动连接客户端,只能被动地等待客户端的连接server_socket.listen(128)# 等待客户端连接,连接上后,函数会返回客户端的Socket对象和地址信息client_socket,ip_port=server_socket.accept()print(f'客户端{ip_port[0]}使用端口{ip_port[1]}连接成功...')# 接收客户端数据data=client_socket.recv(1024)# 查看客户端发送的数据长度if len(data)!=0:    data=data.decode('gbk')    print(f'客户端{ip_port[0]}使用端口{ip_port[1]}发送是数据是{data}')else:    print(f'客户端{ip_port[0]}使用端口{ip_port[1]}关闭了连接') # 给客户端发送数据data='你好'.encode('gbk')client_socket.send(data)# 关闭客户端client_socket.close()# 关闭服务端server_socket.close()

感谢各位的阅读,以上就是"Python基于socket怎么实现TCP客户端和服务端"的内容了,经过本文的学习后,相信大家对Python基于socket怎么实现TCP客户端和服务端这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0