在python中使用socket套接字实现tcp

#在python中使用socket套接字实现tcp
tcp协议是面向连接的,通常分为服务端和客户端。服务端先开启等待客户端的请求,然后为每一个请求的客户端分配单独的一个套接字,也就是说一个服务端可以服务多个客户端

##服务端代码实现

import socket


def main():
    # 1. 创建套接字,AF_INET的含义是跨计算机连接,tcp连接选择SOCK_STREAM
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2. 绑定本地信息,这样才能接受数据
    tcp_server_socket.bind(("", 7890))

    # 3. 等待客户端请求连接,128表和同时处理客户端数量有关
    tcp_server_socket.listen(128)

    # 4. 等待客户端的链接,一旦有连接就返回一个套接字用于处理请求,同时还返回请求来源的IP地址和端口(以元组形式)
    new_client_socket, client_addr = tcp_server_socket.accept()

    print(client_addr)

    # 接收客户端发送过来的请求
    recv_data = new_client_socket.recv(1024)
    print(recv_data)

    # 回送一部分数据给客户端
    new_client_socket.send("信息已经收到".encode("utf-8"))

    # 关闭套接字
    new_client_socket.close()
    tcp_server_socket.close()


if __name__ == "__main__":
    main()

这里只是服务器简单实现,可以加循环和多线程实现具体操作

##客户端

import socket


def main():
    # 1. 创建tcp的套接字,AF_INET的含义是跨计算机连接,tcp连接选择SOCK_STREAM
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2. 链接服务器
    server_ip = input("请输入要链接的服务器的ip:")
    server_port = int(input("请输入要链接的服务器的port:"))
    server_addr = (server_ip, server_port)
    tcp_socket.connect(server_addr)

    # 3. 发送数据/接收数据
    send_data = input("请输入要发送的数据:")
    tcp_socket.send(send_data.encode("utf-8"))
    tcp_socket.recv(1024)

    # 4. 关闭套接字
    tcp_socket.close()


if __name__ == "__main__":
    main()

你可能感兴趣的:(socket通信)