クライアントとサーバの手動作成

1496 ワード

毎日いくつかのソースコードの分析を書くのは面白くないと感じて、この一連の文章はみんなを連れて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
host: baidu.com\r
\r
") 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間の通信です.サーバ側はポートを傍受し、受信したデータを処理する関数を書く必要があります.ここでは無線サイクルを利用して絶え間ない処理を行い,送信されたリクエストを最も簡単な処理方式であり,カーネルイベントを利用した高度な処理方式も多く,しばらくは言わないが,これを徹底的に理解し,少しずつ来ている.