python服务端对应多个客户端_Python-网络编程:TCP2 循环为多个客户端服务

参考代码:

客户端:

import socket

def main():

# 1.创建tcp的套接字

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2.连接服务器

# tcp_socket.connect("127.0.0.1", 1897)

server_ip = input("请输入服务器ip:")

server_port = input("请输入服务器port:")

server_addr = (server_ip, int(server_port))

tcp_socket.connect(server_addr)

while True:

# 3.发送数据/接收数据

send_data = input("请输入要发送的数据:")

if send_data == 'exit' or send_data == 'quit':

break

tcp_socket.send(send_data.encode('utf-8'))

recv_data = tcp_socket.recv(1024)

print(recv_data.decode('utf-8'))

# 4.关闭套接字

tcp_socket.close()

if __name__ == "__main__":

main()

服务端:

import socket

def main():

# 1.创建一个TCP套接字

tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2.绑定信息

local_addr = ("", 7890)

tcp_server_socket.bind(local_addr)

# 3.设为监听模式

tcp_server_socket.listen(128)

while True:

# 4.accept等待。返回:连接进来的客户端创建新的套接字,连接进来的客户端的地址

print("等待一个客户端的到来:")

new_socket, client_addr = tcp_server_socket.accept()

print("来自一个客户端 ", client_addr)

while True:

# 5.接收客户端数据

recv_data = new_socket.recv(1024)

# 如果recv_data解堵塞,那么有两种方式:

# (1) 客户端发送过来数据

# (2) 客户端调用close导致了这里解堵塞

#如果是空的,说明客户端关闭了

if not recv_data:

print("bye:", client_addr)

break

# 打印客户端发送来的数据

print("receive data from client is: ", recv_data.decode('utf-8'))

# 给客户端发送数据

new_socket.send("--ok--".encode('utf-8'))

# 关闭这次accpet创建的为了这次服务的套接字

new_socket.close()

# 7.关闭监听的套接字

tcp_server_socket.close()

if __name__ == "__main__":

main()

运行结果:

标签:__,socket,Python,tcp,server,TCP2,data,客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值