美文网首页
手动建立客户端和服务器端

手动建立客户端和服务器端

作者: KillerManA | 来源:发表于2016-05-06 22:54 被阅读109次

    天天写一些源码分析感觉没什么意思,这一系列的文章带大家用python进行网络编程,编写一些黑客常用工具及脚本,希望大家喜欢。
    首先我们先来看一下手动编写的tcp_client:

    # coding=utf8
    
    import socket
    
    target_host = "www.baidu.com"
    target_port = 80
    
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    client.connect((target_host, target_port))
    
    client.send("GET / HTTP/1.1\r\nhost: baidu.com\r\n\r\n")
    
    response = client.recv(4096)
    print(response)
    

    这里target_port表示目标地址端口,host表示请求地址名称,利用socket的属性进行链接,然后发送数据接受数据。

    接着我们上tcp_server的代码:

    # coding=utf8
    
    import socket
    import threading
    
    bind_ip = "127.0.0.1"
    bind_port = 9999
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    server.bind((bind_ip, bind_port))
    
    server.listen(5)
    
    print "[*] Listening on %s %s" % (bind_ip, bind_port)
    
    
    def handle_client(client_socket):
        request = client_socket.recv(1024)
        print "[*] Received: %s" % request
    
        client_socket.send("ACK!")
        client_socket.close()
    
    
    while 1:
        client, addr = server.accept()
        print "[*] Accepted connection from : %s:%d" % (addr[0], addr[1])
    
        client_handle = threading.Thread(target=handle_client, args=(client,))
        client_handle.start()
    

    这里同样是首先建立一个socket对象,其实客户端和服务器的本质都是socket之间的通信,只不过服务器端需要监听端口,编写一个处理接受的数据的函数而已。这里我们利用无线循环进行不停的处理发送过来的请求,这是最简单的处理方式,还有很多高级的利用内核事件的处理方式,暂时不说,把这理解透彻,一点一点来。

    相关文章

      网友评论

          本文标题:手动建立客户端和服务器端

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