day18網(wǎng)絡基礎

??socket又叫做套接字,就是進行數(shù)據(jù)通信兩端,分為服務端套接字和客戶端套接字。
??python對socket編程的支持:提供一個socket的庫(內(nèi)置)。

??一、服務器套接字

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

??格式為:socket(family,type)
??family:確定IP協(xié)議類型,包含AF_INET:ipv4(默認)和AF_INET6:ipv6。
??type:傳輸協(xié)議類型,包含SOCK_STREAM:TCP協(xié)議(默認)和SOCK_DGRAM:UDP協(xié)議。

import socket
server = socket.socket()
  • 綁定IP地址和端口

??格式為:bind(地址,端口) 。端口:一臺電腦上一個端口標記一個唯一的服務,范圍:0 ~ 65535,起重0 ~ 1024是著名端口,專門用來標記一個特殊的服務,一般不要用。 另外,同一個端口同一時間只能綁定一個服務。

server.bind(('10.7.153.103',8080))
  • 監(jiān)聽客戶端的請求

??格式:listen(最大個數(shù)),同一時間能夠連接的客戶端個數(shù)。

server.listen(512)
  • 讓服務器處于運行狀態(tài)
while True:
  • 連接客戶端(建立連接),返回連接對象和客戶端地址。

??注意:這句代碼會阻塞線程,知道有客戶端來請求當前服務器為止。

connect, addr = server.accept()
print(addr)
  • 服務器給客戶端發(fā)送消息

??格式:send(data)。data:python3中要求類型是bytes。

        while True:
            message = input('服務器:')
            connect.send(message.encode())
  • 接收從客戶端發(fā)送過來的信息

??格式:recv(bufsize),其中bufsize:每次能夠接收到的最大字節(jié)數(shù)。返回值為接收到的數(shù)據(jù),類型是bytes。另外,recv也會阻塞線程。

recv_data = connect.recv(1024)
print(str(recv_data, 'utf-8'))
  • 斷開連接
connect.close()

??二、客戶端套接字

  • 創(chuàng)建套接字對象
import socket
client = socket.socket()
  • 連接服務器
 client.connect(('10.7.153.103', 8088))
  • 接收服務器發(fā)送的消息
 while True:
    data = client.recv(1024)
        print(data.decode(encoding='utf-8'))
  • 給服務器發(fā)送消息
message = input('客戶端:')
client.send(message.encode())
  • 斷開連接
client.close()

??三、http請求

  • 準備url
url = 'https://www.apiopen.top/satinApi?type=1&page=1'
  • 發(fā)送請求

??發(fā)送請求有兩種,get和post兩種方式。格式為:get/post(url,參數(shù)對應的字典),返回值是服務器返回的相應。

import requests
response = requests.get(url)
  • 通過相應獲取服務器返回的數(shù)據(jù)

??a.獲取字符串類型的數(shù)據(jù)

print(response.text)

??b.獲取json格式的數(shù)據(jù)

print(response.json())

??c.獲取二進制格式的數(shù)據(jù)

  print(response.content)

??d.獲取效應頭

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

相關閱讀更多精彩內(nèi)容

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