day18-網(wǎng)絡(luò)編程

day18-網(wǎng)絡(luò)編程


一、socket服務(wù)器


1. 什么是socket

  • socket又叫套接字,指的是實(shí)現(xiàn)網(wǎng)絡(luò)通信的兩端

2. 服務(wù)器套接字

  • 1)創(chuàng)建套接字對象

    • server = socket.socket()

    • socket(family=AF_INET, type=SOCK_STREAM)

      family:設(shè)置ip類型;AF_INET:ipv4;AF_INET6:ipv6

      type:設(shè)置傳輸協(xié)議類型;SOCK_STREAM:TCP傳輸協(xié)議;SOCK_DGRAM:UDP傳輸協(xié)議

  • 2)綁定IP和端口

    • server.bind(('10.7.160.57', 1234))

    • bind(address):綁定地址

      address:元組(IP地址,端口)

      ip地址:通過ip地址可以確定互聯(lián)網(wǎng)中唯一的一臺計(jì)算機(jī)(字符串),運(yùn)行服務(wù)器程序的計(jì)算機(jī)的ip地址

      端口:端口是用來區(qū)分同一臺計(jì)算機(jī)中的不同服務(wù),范圍是0-65535,其中0-1024是著名端口,不能隨便使用

  • 3)開始監(jiān)聽,同時(shí)設(shè)置最大在線客戶端個(gè)數(shù)(設(shè)置同時(shí)在線人數(shù))

    • server.listen(200)
  • 4)讓服務(wù)器一直處于啟動狀態(tài)(通過死循環(huán)方式)

  • 5)接收請求,返回建立的連接和客戶端的地址

    • connection, addr = server.accept()
    • 注意:當(dāng)代碼執(zhí)行到這里的時(shí)候,會阻塞線程
  • 6)接收客戶端發(fā)送的消息

    • re_data = connection.recv(1024)

    • recv(一次性能夠接收的最大值):返回值是接收到的數(shù)據(jù),類型是二進(jìn)制

    • re_message = re_data.decode(encoding='utf-8')

    • 二進(jìn)制數(shù)據(jù)和字符串的轉(zhuǎn)換

      a.二進(jìn)制轉(zhuǎn)字符串:

      -str(二進(jìn)制數(shù)據(jù), encoding='utf-8')

      -二進(jìn)制.decode(encoding='utf-8')

      b.字符串轉(zhuǎn)二進(jìn)制:

      -bytes(字符串, 編碼方式)

      -字符串.encode()

  • 7)發(fā)送消息

    • connection.send('hello'.encode())
  • 8)關(guān)閉連接

    • connection.close()

二、socket客戶端


1.客戶端套接字

  • 1)創(chuàng)建套接字對象
    • client = socket.socket()
  • 2)直接連接服務(wù)器
    • client.connect(('10.7.160.57', 8000))
    • connect((服務(wù)器地址, 服務(wù)器端口))
  • 3)發(fā)送消息
    • client.send('hello'.encode())
  • 4)接收消息
    • re_data = client.recv(1024)
    • re_message = re_data.decode(encoding='utf-8')
  • 5)關(guān)閉連接
    • client.close()

三、requests的使用


1.requests

  • requests是一個(gè)專門用來支持HTTP請求的一個(gè)第三方庫
  • 1)獲取指定url對應(yīng)的資源,返回時(shí)響應(yīng)
    • response = requests.get(url)
    • response = requests.post(url)
  • 2)獲取響應(yīng)頭
    • response.headers
  • 3)獲取內(nèi)容
    • a.字符串格式的內(nèi)容
      • response.text
    • b.獲取json內(nèi)容
      • response.json()
    • c.獲取二進(jìn)制內(nèi)容
      • data = response.content

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容