套接字-tcp

# tcp服务端
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建服务端的套接字对象,声明为网络传输用,数据为基于tcp协议的数据流形式
server.bind(('127.0.0.1', 3000))  # 绑定ip与port
server.listen(5)  # 声明半连接池的容量为5
while 1:
    print('正在等待客户端建立连接...')
    conn, client_addr = server.accept()  # 等待客户端来建立连接
    while 1:  # 客户端建立连接后,等待数据传来
        print('正在等待客户端传输数据...')
        try:
            recv_data = conn.recv(1024)  # 从客户端接收数据,声明每次接受数据的最大字节数为1024
            send_data = ('收到:' + recv_data.decode('utf-8')).encode('utf-8')  # 将收到的数据做一些处理
            conn.send(send_data)  # 将处理好的数据再发给客户端
        except Exception as e:
            print(e)
            break  # 若发生异常,比如客户端关闭,则退出通信循环
    conn.close()  # 通信循环结束后,立即关闭当前连接,从半连接池接入下个客户端或等待新的客户端
# tcp客户端
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建客户端的套接字对象,声明为网络传输用,数据为基于tcp协议的数据流形式
client.connect(('127.0.0.1', 3000))  # 声明服务端的ip与port,以建立与服务端的连接
while 1:
    send_data = input('发送给服务端的数据:').strip().encode('utf-8')
    if len(send_data) == 0:
        continue  # 若发送为空,重新发送
    client.send(send_data)  # 将客户端输入的数据发送给服务端
    recv_data = client.recv(1024)  # 从服务端接收的数据,声明每次接受数据的最大字节数为1024
    print(recv_data.decode('utf-8'))

猜你喜欢

转载自www.cnblogs.com/caoyu080202201/p/12742042.html