Python实现TCP客户端与服务器(代码以及代码分析)

本文介绍了如何使用Python的Socket库实现TCP客户端和服务器。详细讲解了TCP服务端的bind(), listen(), accept(), recv(), send()和close()方法,以及客户端的connect(), recv(), send()和close()方法。在实际操作中,应注意代码的缩进格式,使用网络调试助手辅助调试,并关注编码问题以确保中文信息的正确传输。" 45339271,4988819,Java调用Windows CMD命令:Runtime vs ProcessBuilder,"['Java开发', '系统调用', '命令行接口', '进程管理']
摘要由CSDN通过智能技术生成

使用python Socket套接字来实现TCP客户端,TCP服务端。

在调试时注意:
1.代码复制过后可能缩进格式被改变,可能需要自己调整缩进格式。
2.在调试时,尽量使用网络调试助手进行调试,由于客户端和服务器代码只发或收一次就退出,可能导致没出现预定结果。

1 TCP

TCP的连接分为服务端和客户端。在python中无论是服务端还是客户端,首先需要做的就是导入socket包

import socket

其次所需要的就是实例化一个TCP的对象
需要注意的是,服务端和客户端这两步相同。

socket.socket(socket.AF_INET,socket.SOCK_STREAM)

1.1 TCP服务端

1.1.1 bind()绑定IP,端口号

如果是TCP服务端,就要自己固定一个IP和端口号以供其他客户端连接。所以需要绑定IP和端口号需要用到bind()函数。值得注意的是在函数中的参数应为元组形式的IP和端口号,IP为字符串,端口号为整形。

Tcp_Server_Socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
Tcp_Server_Socket.bind(("127.0.0.1",9090))

1.1.2 listen()设置监听

在服务端绑定过后就需要使用 listen() 设置监听。这里说设置监听,在我的理解就是设置监听队列并监听之前绑定的端口,如果有客户端连接 9090 端口时,自动将其加入到 listen 所创建的队列中
(由于TCP的三次握手机制队列中既存在已经完成三次握手的客户端,也存在只完成一次或两次握手的客户端,他们共同占用该队列,所以如果未完成三次握手的客户端迟迟不完成,同时有多个客户端也只进行一次或二次连接,会导致队列被占满,同时由于没有已完成三次握手的客户端,从而导致不能从中提取可以使用的客户端而不能提供服务)
既然存在等待队列,那么一定可以设置队列大小,其大小需要在 listen()的参数中填写

Tcp_Server_Socket.listen(128)

1.1.3 accept()提取可用客户端

在队列设置好后如果有已完成三次握手的客户端,TCP服务器就应该可以跟它收发信息。
于是 ac

好的,下面是一个简单的 Python 实现 TCP 客户端服务器端的示例代码: ### TCP 服务器代码 ```python import socket # 创建 TCP 服务器socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 server_socket.bind(('127.0.0.1', 8888)) # 开始监听连接请求 server_socket.listen(1) print('服务器启动,等待连接...') # 等待客户端连接 client_socket, client_address = server_socket.accept() print('客户端已连接:', client_address) while True: # 接收客户端消息 data = client_socket.recv(1024) if not data: # 客户端断开连接 break print('收到客户端消息:', data.decode()) # 发送响应消息 response = '已收到消息:{}'.format(data.decode()) client_socket.send(response.encode()) # 关闭连接 client_socket.close() server_socket.close() ``` ### TCP 客户端代码 ```python import socket # 创建 TCP 客户端 socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 client_socket.connect(('127.0.0.1', 8888)) print('已连接服务器...') while True: # 发送消息 message = input('请输入要发送的消息:') client_socket.send(message.encode()) # 接收响应消息 response = client_socket.recv(1024) print('收到服务器响应:', response.decode()) # 关闭连接 client_socket.close() ``` 以上代码仅作为 TCP 客户端服务器端的简单示例,实际应用中需要添加异常处理、多线程处理等功能以提高稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值