美文网首页
python实现的tcp客户端和服务端

python实现的tcp客户端和服务端

作者: 云中翻月 | 来源:发表于2019-07-19 19:11 被阅读0次

    tcp client.py

    import socket
    target_host="127.0.0.1"
    target_port=81
    client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    client.connect((target_host,target_port))
    client.send("hello".encode("utf-8"))
    reponse=client.recv(4096)
    print(reponse)
    

    tcp server.py

    import socket
    import threading
    bind_ip="127.0.0.1"
    bind_port=81
    server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    server.bind((bind_ip,bind_port))
    server.listen(5)
    print("[*] Listening on %s:%d" % (bind_ip,bind_port))
    def handle_client(client_socket):
        request=client_socket.recv(1024)
        print("[*] Received: %s" % request)
        client_socket.send("ack!".encode("utf-8"))
        client_socket.close()
    while(True):
        client,addr=server.accept()
        print("[*] Accept connection from %s:%d" % (addr[0],addr[1]))
        client_handler=threading.Thread(target=handle_client,args=(client,))
        client_handler.start()
    

    效果:首先运行tcp server.py,然后多次运行tcp client.py,则tcp server.py对应的命令行会接受到如下内容

    [*] Listening on 127.0.0.1:81
    [*] Accept connection from 127.0.0.1:20929
    [*] Received: b'hello'
    [*] Accept connection from 127.0.0.1:20931
    [*] Received: b'hello'
    [*] Accept connection from 127.0.0.1:20932
    [*] Received: b'hello'
    [*] Accept connection from 127.0.0.1:20933
    [*] Received: b'hello'
    ......
    

    tcp client.py对应的命令行会接受到如下内容

    b'ack!'
    

    用处:DOS下的netcat命令可以用于连接服务器,但由于其能力强,因此容易被独立网络的管理人员禁止。但上述代码中使用到的socket模块却与python绑定,因此外部人员进入内部网络后,可以使用python手动实现一个tcp协议的客户端,将网络中的一个IP端口开放,并通过外部的服务端来向客户端发送信息,从而达到构建数据连接的作用。

    相关文章

      网友评论

          本文标题:python实现的tcp客户端和服务端

          本文链接:https://www.haomeiwen.com/subject/glzslctx.html