Python Web Server

#/usr/bin/python
#coding=utf-8
from socket import *

def handle_client(client_socket):
    # 客戶端服務
    recv_data = client_socket.recv(1024).decode("utf-8") # 1024表示本次最大接收字節數
    request_header_lines = recv_data.splitlines()
    for line in request_header_lines:
        print(line)

    # 返回瀏覽器數據
    # 設置返回頭信息 header
    response_headers = "HTTP/1.1 200 OK\r\n" # HTTP Stuts
    response_headers += "\r\n" # 空一行與body隔開
    # 設置內容body
    response_body = "<h1>testestestest</h1>\r\n"

    # 合併範返回數據
    response = response_headers + response_body

    # 返回數據給客戶端
    client_socket.send(response.encode("utf-8")) #轉編碼utf8併發送給客戶端
    client_socket.close()


def main():
    # 創建套接字
    server_socket =socket(AF_INET,SOCK_STREAM)
    # 設置當服務區線close 即服務區段4此揮手之後資源能夠立即釋放,保證了下次運行程序時可以立即綁定7788端口
    server_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
    # 設置監聽端口
    server_socket.bind(("",7788))
    # 使用socket創建愛你的套接字默認的屬性是主動的,使用listen將其改爲被動,用來監聽連接
    server_socket.listen(128) # 最大連接數
    # while循環處理訪問過來的請求
    while True:
        # 如果有新客戶端來連接服務端,就生成一個新的套接字單獨爲按這個客戶端服務
        # client_socket用來爲這個客戶端服務
        # server_socket專門等待其他新的客戶端連接 while True:
        client_socket,clientAddr = server_socket.accept()
        handle_client(client_socket)
        print("正在監聽中")

if __name__ == '__main__':
    main()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章