socket模擬HTTP請求

服務(wù)端腳本

#encoding:utf-8

import socket

#創(chuàng)建一個套接字拄养,走默認(rèn)參數(shù)IPV4
tcp=socket.socket()
#避免端口沖突
tcp.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
host='127.0.0.1'
port=6699
#綁定IP和端口
tcp.bind((host,port))
#設(shè)置客戶端監(jiān)聽
tcp.listen(1)
#設(shè)置接收buff和發(fā)送buff
recv_buff=tcp.getsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF)
send_buff=tcp.getsockopt(socket.SOL_SOCKET,socket.SO_SNDBUF)

#循環(huán)接收客戶端數(shù)據(jù)并發(fā)送
while True:
    print("waiting....")
    client,c_draa=tcp.accept()
    print("客戶端地址:",c_draa)
    #接收客戶端數(shù)據(jù)
    c_data=client.recv(4096)
    c_data=str(c_data,'utf-8')
    print("打印客戶端接收數(shù)據(jù)",c_data)
    #提取請求頭的請求方法
    header=c_data.split('\r\n')
    print("請求頭按回車和換行進(jìn)行分組",header)
    #提取請求方法分組
    head_methd=header[0]
    #將提取的字符串用空格分組豁辉,最終提取到請求方法
    head_methd=head_methd.split(' ')[0]
    print("提取最終請求方法:",head_methd)
    if head_methd=='GET':
        print("GET請求")
        content="HTTP/1.1 200 ok\r\nContent-Type: application/json;charset=utf8\r\nTIP:XcxQuery\r\n\r\n"
        res= content + '{"code":"success","msg":"get respones"}'
        # 給客戶端返回響應(yīng)數(shù)據(jù)
        client.sendall(res.encode())
    elif head_methd=='POST':
        print("POST請求")
        #獲取請求頭中的Content-Length長度
        content_length=0
        for line in header:
            if line.startswith("Content-Length"):
                content_length=int(line.split(":")[1])
                break
        #接收請求體
        req_body=client.recv(content_length).decode()
        print("請求體:",req_body)
        content = "HTTP/1.1 200 ok\r\nContent-Type: application/json;charset=utf8\r\nTIP:XcxQuery\r\n\r\n"
        res = content + '{"code":"success","msg":"post respones"}'
        # 給客戶端返回響應(yīng)數(shù)據(jù)
        client.sendall(res.encode())

    else:
        print("請求異常響應(yīng)報文")
        content="HTTP/1.1 400 Bad Request\r\nContent-Type: application/json;charset=utf8\r\nTIP:null\r\n\r\n"
        res=content + '{"code":"FAIL","message":"Invalid Request"}'
        # 給客戶端返回響應(yīng)數(shù)據(jù)
        client.sendall(res.encode())
    #關(guān)閉客戶端連接
    client.close()

客戶端腳本

#encoding:utf-8

import requests
import json

def http_client(url,method,data=None):
    if method=="post":
        headers={"Content-Type": "application/json;charset=utf8"}
        res=requests.post(url,data=data,headers=headers,timeout=30)
    else:
        res=requests.get(url)
    print("打印響應(yīng):", res.text)
    print("打印header:",res.headers)

if __name__=="__main__":
    #url="http://127.0.0.1:6699/login?name=lili"
    url="http://127.0.0.1:6699/login"
    data="{'name':'lili'}"
    http_client(url,'get')
    http_client(url,"post",data)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辆脸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌佛玄,老刑警劉巖庞呕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缓醋,居然都是意外死亡,警方通過查閱死者的電腦和手機绊诲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門送粱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掂之,你說我怎么就攤上這事抗俄。” “怎么了世舰?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵动雹,是天一觀的道長。 經(jīng)常有香客問我冯乘,道長洽胶,這世上最難降的妖魔是什么晒夹? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任裆馒,我火速辦了婚禮,結(jié)果婚禮上丐怯,老公的妹妹穿的比我還像新娘喷好。我一直安慰自己,他們只是感情好读跷,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布梗搅。 她就那樣靜靜地躺著,像睡著了一般效览。 火紅的嫁衣襯著肌膚如雪无切。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天丐枉,我揣著相機與錄音哆键,去河邊找鬼。 笑死瘦锹,一個胖子當(dāng)著我的面吹牛籍嘹,可吹牛的內(nèi)容都是我干的闪盔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼辱士,長吁一口氣:“原來是場噩夢啊……” “哼泪掀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颂碘,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤异赫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后头岔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祝辣,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年切油,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝙斜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡澎胡,死狀恐怖孕荠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情攻谁,我是刑警寧澤稚伍,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站戚宦,受9級特大地震影響个曙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜受楼,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一垦搬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艳汽,春花似錦猴贰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至馋艺,卻和暖如春栅干,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捐祠。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工碱鳞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雏赦。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓劫笙,卻偏偏與公主長得像芙扎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子填大,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容