这篇文章主要讲解了“Python基于socket怎么实现TCP客户端和服务端”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python基于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-8 data='hello'.encode('gbk') # 向服务器发送数据 client_socket.send(data) # 接收数据,必须要指定接收数据的大小,单位字节,最大4096,即4k recv_data=client_socket.recv(1024) # 接收的数据要进行decode()解码,发送的时候用啥编码就填啥编码 recv_data=recv_data.decode('gbk') print(recv_data) # 关闭连接 client_socket.close()
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,默认是绑定本地IP server_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客户端和服务端这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。