您好,登錄后才能下訂單哦!
代碼如下所示:
import socket import re import multiprocessing def service_client(client_socket): data = client_socket.recv(1024) recv_data=data.decode("utf-8") print(recv_data) #GET /index.html HTTP/1.1 ret=re.match(r"[^/]+ /([\S]+\s|\s)",recv_data) file_n="index.html" if ret: if ret.group(1)!=" ": print(ret.group(1)) file_n=ret.group(1) else: print("代碼有誤!") try: with open(file_n,"rb") as f: content=f.read() f.close() except Exception as r: print(r) content = "<h2>file not found<\h2>".encode("utf-8") header="HTTP/1.1 200 OK\r\n" empty="\r\n" response=(header+empty).encode('utf-8') client_socket.send(response) client_socket.send(content) client_socket.close() print("client_socket.close()已調(diào)用") def main(): tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) local_addr=("127.0.0.1",7788) tcp_socket.bind(local_addr) tcp_socket.listen(128) while True: client_socket, client_addr = tcp_socket.accept() p=multiprocessing.Process(target=service_client,args=(client_socket,)) p.start() # p.join() tcp_socket.close() if __name__ == "__main__": main()
注意:
1.開始的時候file_n沒有先定義,結(jié)果就報錯:local variable ‘file_n' referenced before assignment
2.正則表達式一定要先驗證篩取的內(nèi)容是否正確。
3.要獲取程序同級文件夾中文件夾的文件,相對路基為“文件夾名/文件名”
4.tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 要加不然容易出現(xiàn)“address already in use"之類的故障
總結(jié)
以上所述是小編給大家介紹的使用瀏覽器訪問python寫的服務(wù)器程序,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。