TCP客户端,服务端信息传递以及服务端与多客户端信息传递

1.TCP客户端信息传递

思路

        1.创建客户端套接字对象(买电话)
        2.和服务端套接字建立连接(打电话)
        3.发送数据(说话)
        4.接收数据(接听)
        5.关闭客户端套接字(挂电话)

实现步骤

        1.导入所需模块:导入socket模块来处理网络通信

        2.创建TCP套接字:使用socket.socket()函数创建一个TCP套接字

        3.连接到服务器:使用connect()方法连接到服务器的IP地址和端口号

        4.发送数据:使用send()方法将数据发送到服务器

        5.接收服务器的响应:使用recv()方法从服务器接收数据

        6.关闭连接:使用close()方法关闭客户端套接字

实现代码

import socket  # 套接字模块

if __name__ == '__main__':
    # 1.创建客户端套接字对象(买电话)
    # socket.AF_INET---IPv4 协议族---10进制点分格式
    # socket.AF_INET6---IPv6 协议族---16进制点分格式
    # socket.SOCK_STREAM---TCP协议---精准数据传输
    # socket.SOCK_DGRAM---UDP协议---不精准数据传输
    tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 2.和服务端套接字建立连接(打电话)
    # connect((服务端IP地址,端口号))
    tcp_client.connect(('192.168.10.64', 8080))
    # 3.发送数据(说话)
    # send("发送的数据".编码格式(将字符串转换为二进制))
    # encode 编码 将字符串转化为字节码
    # decode 解码将字节码转化为字符串
    tcp_client.send("哎呦,你干嘛!".encode('GBK'))
    # 4.接收数据(接听)
    while True:
        recv_data = tcp_client.recv(1024).decode("GBK")
        if recv_data:
            print(f"接受的数据为:{recv_data}")
        else:
            break   
    # 5.关闭客户端套接字(挂电话)
    tcp_client.close()

2.TCP服务端信息传递

实现步骤

        1.创建一个套接字(socket)

        2.绑定到一个指定的IP地址和端口(bind)

        3.开始监听连接请求(listen)

        4.接受来自客户端的连接请求(accept)

        5.处理客户端发送的数据(recv),并可以选择回复数据(send)

        6.关闭连接(close)

实现代码

import socket  # 套接字模块


if __name__ == '__main__':
    # 1.创建服务端套接字对象
    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 端口复用
    tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    # 2.绑定IP地址和端口号
    tcp_server.bind(('127.0.0.1', 8085))
    # 3.设置监听,监听客户端的连接数量,默认最大的128个(同时)
    tcp_server.listen(128)
    # 4.等待接收客户端的连接请求
    client = tcp_server.accept()
    while True:
        conn_socket, ip_port = client
        print(f"客户端发送过来的套接字对象{conn_socket}")
        print(f"客户端发送过来的IP地址和端口号{ip_port}")
        # 5.接收数据
        data = conn_socket.recv(2024)
        print(f"接受的数据:{data.decode('GBK')}")
        # 6.发送数据
        conn_socket.send(input("服务端回复:").encode('GBK'))
        # 7.关闭套接字
        if not data:
            break
    conn_socket.close()
    tcp_server.close()

3.TCP服务端与多客户端信息传递

实现步骤

        1.服务器需要监听客户端连接请求,并接受这些连接。

        2.使用多线程来处理多个客户端的连接。每当一个新的客户端连接到服务器时,创建一个新的线程来专门处理该客户端的通信

        3.每个客户端连接后,服务端可以接收和发送数据

        4.服务端需要有逻辑来处理不同客户端发送的信息,如广播信息给所有客户端,或实现某种业务逻辑

        5.客户端通过TCP连接到服务器,并在连接建立后可以进行数据的发送和接收

        6.客户端应处理来自服务端的数据,并根据协议进行相应的操作

实现代码

import socket  # 套接字模块
import threading


def dialogue(new_socket, ip_port):
    while True:
        # 5.接收数据
        data = new_socket.recv(2024)
        print(f"接受的数据:{data.decode('GBK')}")
        # 6.发送数据
        new_socket.send(input("服务端回复:").encode('GBK'))
        # 7.关闭套接字
    new_socket.close()


def start_server():
    # 1.创建服务端套接字对象
    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 端口复用
    tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    # 2.绑定IP地址和端口号
    tcp_server.bind(('127.0.0.1', 8085))
    # 3.设置监听,监听客户端的连接数量,默认最大的128个(同时)
    tcp_server.listen(128)
    # 4.等待接收客户端的连接请求
    while True:
        new_socket, ip_port = tcp_server.accept()
        # 创建多任务线程对象
        client_thread = threading.Thread(target=dialogue, args=(new_socket, ip_port))
        print(f"当前客户端的IP地址和端口号{ip_port}")
        client_thread.start()
        # dialogue(new_socket, ip_port)

    tcp_server.close()


if __name__ == '__main__':
    start_server()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值