day-19課后總結(jié)

網(wǎng)絡(luò)通信

1.socket服務(wù)器

socket又叫套接字沧踏,實(shí)現(xiàn)網(wǎng)絡(luò)通信的兩端就是套接字潮改,分為服務(wù)器對(duì)應(yīng)的套接字和客戶(hù)端對(duì)應(yīng)的套接字

import socket

==========寫(xiě)一個(gè)服務(wù)器程序==========
a.創(chuàng)建服務(wù)器對(duì)應(yīng)的套接字對(duì)象(買(mǎi)了一個(gè)座機(jī))

socket(family, typr)
family:設(shè)置ip類(lèi)型 AF_INET(ipv4) -> 默認(rèn)值 AF_INET6(ipv6)
type:設(shè)置傳輸類(lèi)型 SOCK_STREAM(TCP可靠傳輸) SOCK_DGRAM(UDP不可靠傳輸)

server = socket.socket()  #創(chuàng)建一個(gè)基于ipv4的可靠傳輸?shù)姆?wù)器套接字

b.綁定IP和端口(插電話(huà)線(xiàn)---確定電話(huà)號(hào)碼)

bind(ip擎鸠, 端口)
ip:服務(wù)器地址
端口:不同端口用來(lái)區(qū)分電腦上不用的服務(wù)宴树。取值范圍0~65535
注意:0~1024屬于著名端口(用來(lái)綁定特殊服務(wù)端口护糖,不要隨意用)

server.bind(('10.7.156.85', 5632))

c.監(jiān)聽(tīng)請(qǐng)求(交電話(huà)費(fèi))

listen(個(gè)數(shù))--需要通過(guò)數(shù)字設(shè)置服務(wù)器一次可以處理最大的請(qǐng)求個(gè)數(shù)

server.listen(512)

d.讓服務(wù)器一直處于啟動(dòng)狀態(tài)

while True:
    # 5.接收客戶(hù)端的請(qǐng)求(有人撥電話(huà)了靴拱,接電話(huà))
    """
    執(zhí)行到accept()垃喊,程序會(huì)停下來(lái),直到有客戶(hù)端在請(qǐng)求這個(gè)服務(wù)器的時(shí)候才會(huì)往下執(zhí)行袜炕。
    返回會(huì)話(huà)和客戶(hù)端的地址
    """
    conversation, addr = server.accept()
    print(addr)
    # 6.服務(wù)器給客戶(hù)端發(fā)送數(shù)據(jù)(說(shuō)話(huà))
    """
    send(data)--> 發(fā)送數(shù)據(jù)
    data:需要發(fā)送的數(shù)據(jù)本谜,要求是二進(jìn)制數(shù)據(jù)(bytes)
    
    a.str 轉(zhuǎn) bytes
    bytes(字符串, encoding='utf-8')
    字符串.encode(編碼方式)
# message = '你好嗎偎窘?'
    # # message_data = bytes(message, encoding='utf-8')
    # message_data = message.encode( encoding='utf-8')
    # conversation.send(message_data)

    # 發(fā)送一張圖片
    with open('./files/1.jgp', 'br')as f:
        content = f.read()
        conversation.send(content)
        # 關(guān)閉鏈接
        conversation.close()

    # 7.接收客戶(hù)端發(fā)送的消息(聽(tīng)電話(huà))
    """
    recv(字節(jié)數(shù))---> 接收從客戶(hù)端發(fā)送的數(shù)據(jù)乌助,參數(shù)是用來(lái)一次能接收的做大字節(jié)數(shù).
    返回值是接收到的數(shù)據(jù)(二進(jìn)制)
    
    bytes 轉(zhuǎn)換 字符串
    str(二進(jìn)制,encoding='utf-8')
    二進(jìn)制.decode(編碼方式)
    
    注意:recv方法也會(huì)阻塞線(xiàn)路陌知,程序運(yùn)行到這人會(huì)等下等他托,等到對(duì)方發(fā)送消息為止
    """
    # data = conversation.recv(1024)
    # # re_meassage = str(data, encoding='utf-8')
    # re_meassage = data.decode(encoding='utf-8')
    # print(re_meassage)
    """

2.socket客戶(hù)端

import socket

a.創(chuàng)建客戶(hù)端套接字

client = socket.socket()

b.連接服務(wù)器
connect(地址)

client.connect(('10.7.156.85', 5536))
while True:

    # 4.給服務(wù)器發(fā)送消息
    message = input('客戶(hù)端:')
    client.send(message.encode('utf-8'))

    # 3.接收服務(wù)器返回的數(shù)據(jù)
    re_data = client.recv(1024)
    print('服務(wù)器:', re_data.decode('utf-8'))
    if re_data.decode('utf-8') == '拜拜':
        break

3.socket服務(wù)器升級(jí)

import socket
# 1.創(chuàng)建服務(wù)器套接字
sever = socket.socket()
# 2.綁定地址
sever.bind(('10.7.156.85', 5536))
# 3.監(jiān)聽(tīng)
sever.listen(100)

#讓服務(wù)器一直處于運(yùn)行狀態(tài)
while True:
  # 4.接收請(qǐng)求
  conversation, addr = server.accept()
  
  # 保持通話(huà)
  while True:
    # 接收消息
    message_re = conversation.recv(1024).decode('utf-8')
    print('客戶(hù)端(%s):%s'%(addr[0][-2:], message_re))
    if message_re == '拜拜':
      break
    # 發(fā)送消息
    message = input('服務(wù)器:')
    conversation.send(message.encode('utf-8'))
    if message == '拜拜':
      break

4.接收?qǐng)D片的客戶(hù)端

import socket
client = socket.socket()
client.connect(('10.7.156.97', 8081))

message_re = client.recv(1024)
data = bytes()  # 創(chuàng)建一個(gè)空的二進(jìn)制數(shù)據(jù)
while message_re:

    # print(message_re)
    data += message_re # 將每次獲取到的數(shù)據(jù)疊加
    print('接收到數(shù)據(jù)')
    message_re = client.recv(1024)

with open('./new.jpg', 'bw') as f:
    f.write(data)
print('接受完成')

5.repuests請(qǐng)求

import requests
"""
requests.get(url, params)
url: 請(qǐng)求地址
params:客戶(hù)端給服務(wù)器發(fā)送的數(shù)據(jù)(字典){參數(shù)名:值}
"""
# https://www.apiopen.top/satinApi?type=1&page=1
url = 'https://www.apiopen.top/satinApi?type=1&page=1'
response = requests.get(url, {'type': 1, 'page': 1})
# 1.獲取響應(yīng)頭
print(response.headers)

# 2.拿二進(jìn)制形式的響應(yīng)體
data_bytes = response.content
print(type(data_bytes))

# 3.拿字符串形式的響應(yīng)體
data_text = response.text
print(data_text, type(data_text))

# 4.拿json格式對(duì)應(yīng)的python數(shù)據(jù)
data_json = response.json()
print(data_bytes)

# 下載圖片到本地
response = requests.get('')
content = response.content
with open('./aa.jpg', 'wb')as f:
    f.write(content)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仆葡,隨后出現(xiàn)的幾起案子赏参,更是在濱河造成了極大的恐慌,老刑警劉巖沿盅,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件把篓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腰涧,警方通過(guò)查閱死者的電腦和手機(jī)韧掩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窖铡,“玉大人疗锐,你說(shuō)我怎么就攤上這事坊谁。” “怎么了窒悔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵呜袁,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我简珠,道長(zhǎng)阶界,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任聋庵,我火速辦了婚禮膘融,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祭玉。我一直安慰自己氧映,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布脱货。 她就那樣靜靜地躺著岛都,像睡著了一般。 火紅的嫁衣襯著肌膚如雪振峻。 梳的紋絲不亂的頭發(fā)上臼疫,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音扣孟,去河邊找鬼烫堤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凤价,可吹牛的內(nèi)容都是我干的鸽斟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼利诺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼富蓄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起慢逾,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤格粪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后氛改,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體帐萎,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年胜卤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疆导。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡葛躏,死狀恐怖澈段,靈堂內(nèi)的尸體忽然破棺而出悠菜,到底是詐尸還是另有隱情,我是刑警寧澤败富,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布悔醋,位于F島的核電站,受9級(jí)特大地震影響兽叮,放射性物質(zhì)發(fā)生泄漏芬骄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一鹦聪、第九天 我趴在偏房一處隱蔽的房頂上張望账阻。 院中可真熱鬧,春花似錦泽本、人聲如沸淘太。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蒲牧。三九已至,卻和暖如春赌莺,著一層夾襖步出監(jiān)牢的瞬間造成,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工雄嚣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喘蟆。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓缓升,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蕴轨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子港谊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • 網(wǎng)絡(luò)編程 一.楔子 你現(xiàn)在已經(jīng)學(xué)會(huì)了寫(xiě)python代碼歧寺,假如你寫(xiě)了兩個(gè)python文件a.py和b.py,分別去運(yùn)...
    go以恒閱讀 1,992評(píng)論 0 6
  • 網(wǎng)絡(luò)中進(jìn)程之間如何通信 為了方便大家獲取源代碼棘脐,可以移步這里斜筐,GitHub源代碼 進(jìn)程通信的概念最初來(lái)源于單機(jī)系統(tǒng)...
    batbattle閱讀 14,151評(píng)論 1 5
  • 三連一班 今天是夏令營(yíng)的第三天已經(jīng)結(jié)營(yíng)了每名學(xué)員的臉上笑容是不一樣的,因?yàn)樗麄円呀?jīng)習(xí)慣了這里的一切蛀缝。 三連一班 烈...
    不想放棄_6a63閱讀 146評(píng)論 0 0
  • 2018顷链,我想換個(gè)方式過(guò) 我想樂(lè)觀(guān)一些 把糟糕的事 統(tǒng)統(tǒng)都拋到腦后 把以前所嘗到的苦 都忘卻的一干二凈 給自己一個(gè)...
    小伙啊閱讀 210評(píng)論 1 3
  • 雖然厲害的程序員都用文本編輯器,但是集成IDE對(duì)程序員的幫助也是很大的,但是很多新手在安裝pycharm的時(shí)候會(huì)發(fā)...
    char1y1閱讀 18,981評(píng)論 0 1