在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python-網絡編程

汽車電子技術 ? 來源:程序猿知秋 ? 作者: 程序猿知秋 ? 2023-02-16 15:45 ? 次閱讀

網絡通信基本概述

  • 網絡是什么?
    • 網絡就是輔助雙方或多方連接在一起的工具
  • 使用網絡的目的?
    • 使連接網絡的多方,能進行數據傳遞
  • 網絡編程是什么?
    • 就是讓在不同電腦上的軟件能進行數據傳遞
  • IP地址是什么?
    • 用來在網絡中標記一臺電腦,比如:192.168.1.1;在本地局域網內是唯一的
  • 查看本機ip地址
    • 在dos命令窗口中,輸入:ipconfig
    • 圖片
  • 什么是端口
    • 端口是通過端口號來標記的,范圍是從 0~65535
    • 知名端口
      • 眾所周知的端口號,范圍 0~1023,例如:80端口是http的,21端口是ftp用的
      • 一般情況下,程序要使用知名端口是需要管理員權限的
    • 動態端口
      • 動態端口一般不固定,是動態分配的,范圍從 1024~65535
      • 動態分配是指,當一個程序需要網絡通信時,它向主機申請一個端口,主機從可用的端口中分配一個供它使用,當這個程序關閉時,同時會釋放占用的端口
    • 可以在命令窗口中輸入:** netstat -ano **查看端口狀態

socket概述

  • 什么是socket?
    • socket 簡稱 套接字 ,是進程間通信的一種方式,它與其它進程間通信的一個主要不同是:它能實現不同主機間的通信,例如:QQ、微信等
  • Python中,使用socket 模塊的函數 socket 來創建通信

語法

import socket
socket.socket(family,type)

參數說明

  • **family: **可以選擇 AF_INET(用于Internet 進程間通信) 或者 AF_UNIX (用于另一臺機器進程間通信),實際工作中常用AF_INET
  • Type: 套接字類型,可以是SOCK_STREAM(流式套接字,主要用于TCP協議) 或者 SOCK_DGRAM(數據報套接字,主要用于UDP協議)

**說明

**

  • 套接字使用流程與文件使用流程類似
    • 創建套接字
    • 使用套接字收/發數據
    • 關閉套接字

示例

import socket
# 創建TCP的套接字 (點對點)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)


# 發送或者接收信息 ...


# 關閉套接字
s.close()


# 創建UDP的套接字 (一對多,廣播形式)
s2=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)


# 發送或者接收信息 ...


# 關閉套接字
s2.close()

UDP協議

  • 介紹
    • 用戶數據報協議,是一個無連接的簡單的面向數據報的運輸層協議
    • UDP數據包括目的端口號和源端口號信息,由于通訊不需要連接,所以可以實現廣播發送
  • 優點
    • 傳輸速度快
    • 有效傳輸的數據量最多為500bytes
  • 缺點
  • 發送數據,無需對方確認(不可靠)
  • 容易丟包
  • 應用場景
    • UDP廣泛應用于需要相互傳輸數據的網絡應用中,如QQ使用的就是UDP協議
    • 在局域網中,如果要想局域網內所有計算機發送數據,可以使用廣播,廣播不能用TCP實現,可以用UDP實現

**示例

**

**客戶端

**

import socket


# 創建UDP的套接字
udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#  允許套接口傳送廣播信息,當option_value不等于0時,允許,否則,禁止
udpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)


port=33333
# ip 為廣播形式,也可以用255.255.255.25 表示全局域網都可以接收
network=''
# 發送廣播數據
udpSocket.sendto("我在發送數據!!".encode("utf-8"),(network,port))


# 關閉
udpSocket.close()

服務端

import socket


# 創建UDP的套接字
udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#  允許套接口傳送廣播信息
udpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)


port=33333
# 綁定ip和端口,本機ip可以不寫
udpSocket.bind(('',port))


# 等待接收方發送數據,1024表示本次接收的最大字節數
data,address=udpSocket.recvfrom(1024)
print("接收到的數據是:%s,地址是:%s"%(data.decode("utf-8"),str(address)))


# 關閉
udpSocket.close()

TCP協議

  • 介紹
    • TCP協議,是一種傳輸控制協議,是一種面向連接的,可靠的,基于字節流的傳輸層控制協議,由IETF的RFC 793定義
    • TCP是一種點對點的傳輸方式
    • TCP協議編寫的三個步驟:創建連接、數據傳遞、關閉連接
    • TCP 通信模型中,在通信開始之前,一定要先建立相關的連接,才能發送數據
  • 優點
    • 可靠,穩定 TCP的可靠體現在TCP在傳遞數據之前,會有三次握手來建立連接
    • 在數據傳遞時,有確認、重傳、擁塞控制機制
    • 在數據傳完后,會斷開連接用來節約系統資源
  • 缺點
    • 慢,效率低,占用系統資源高
    • 易被攻擊,TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊

TCP與UDP的區別

  • 面向連接
    • TCP面向連接(如打電話要先撥號建立連接)
    • UDP是無連接的,即發送數據之前不需要建立連接
  • 可靠
    • TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達
    • UDP盡最大努力交付,不需要對方確認,即不保證可靠交付
  • 字節流
    • TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流
    • UDP是面向報文的,UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
  • 連接性
    • TCP連接只能是點到點的
    • UDP支持一對一,一對多,多對一和多對多的交互通信
  • 首部開銷
    • TCP首部開銷20字節
    • UDP首部開銷小,只有8個字節
  • 信道
    • TCP的邏輯通信信道是全雙工的可靠信道
    • UDP則是不可靠信道

示例

服務端

import socket


# 創建tcp 的套接字
tcp_socekt=socket.socket(socket.AF_INET,socket.SOCK_STREAM)


# ip與端口,本機ip可以不寫
addr=('',44444)
# 綁定地址
tcp_socekt.bind(addr)


# 使用socket創建的套接字默認的屬性是 主動的,使用 listen 將其變為被動,這樣就可以接收別人的連接了, 128表示允許的最大連接數
tcp_socekt.listen(128)


# 如果有一個新的客戶端來連接服務器,那么就產生一個新的套接字專門為這個客戶端服務
# client_socket 用來為這個客戶端服務
# tcp_socket 就可以用來專門等待其他新客戶端的鏈接
client_socket,client_addr=tcp_socekt.accept()


# 接收對方發過來的數據
data=client_socket.recv(1024)
print("接收到的數據是:%s,地址是:%s"%(data.decode("utf-8"),str(client_addr)))


# 發送數據到客戶端
client_socket.send("hello....".encode("utf-8"))


# 關閉為這個客戶端服務的套接字,一旦關閉,就意味著不能再為這個客戶端服務了
client_socket.close()


# 關閉外面總的 套接字,一旦關閉,則意味著不再接收任何連接了
tcp_socekt.close()

客戶端

import socket


# 創建tcp 套接字
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)


# 目標服務器地址
dest_addr=("127.0.0.1",44444)


# 連接目標服務器
tcp_socket.connect(dest_addr)


# 發送數據
tcp_socket.send("我是客戶端".encode("utf-8"))


# 接收對方發過來的數據,最大接收1024個字節
data=tcp_socket.recv(1024)
print("接收到的數據是:%s"%data.decode("utf-8"))


# 關閉套接字
tcp_socket.close()
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網絡
    +關注

    關注

    14

    文章

    7583

    瀏覽量

    88949
  • 工具
    +關注

    關注

    4

    文章

    314

    瀏覽量

    27833
  • 輔助
    +關注

    關注

    0

    文章

    8

    瀏覽量

    10529
收藏 人收藏

    評論

    相關推薦

    Labview與Python網絡編程

    Labview素有測試之王的美譽,圖形化編程和快速搭建自動化平臺讓人愛不釋手。但是Labview不能在安卓平臺上運行,開發web也力不從心。如果labview配合上Python簡直就如虎添翼了
    發表于 11-12 13:48

    Python學習之網絡編程Socket分享

    Python學習之網絡編程Socket
    發表于 07-02 08:18

    請問python-樹莓派如何通過按鍵控制步進電機正反轉?

    步進電機驅動原理是什么?python-樹莓派如何通過按鍵控制步進電機正反轉?
    發表于 10-09 08:45

    python-控制khr3hv-master機器人

    python-控制khr3hv機器人,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-22 15:40 ?2次下載

    設計多網絡協議的Python網絡編程的探索性指南

    很高興看到本書出版了,我要感謝所有為本書的出版做出貢獻的人。本書是Python網絡編程方面的探索性指南,涉及了很多網絡協議
    發表于 09-14 10:47 ?5次下載

    python-速成指南

    python 提供好用的兩個容器:list 和 dict。插句題外話,其實最好用的容器還是 PHP 提供的關聯數組,一個數組就包括了 python 中 list 和 dict 的全部功能,實在是很贊。
    發表于 03-28 16:32 ?9次下載

    Python網絡編程基礎

    Python網絡編程基礎知識免費下載。
    發表于 06-01 14:29 ?23次下載

    Python編程入門》.pdf

    Python編程入門》.pdf
    發表于 02-11 16:03 ?0次下載

    Python-模塊與包

    模塊是Python 程序架構的一個核心概念
    的頭像 發表于 02-16 14:55 ?786次閱讀
    <b class='flag-5'>Python-</b>模塊與包

    Python-字典

    dictionary (字典) **是除列表外** Python **中,最靈活的數據類型
    的頭像 發表于 02-16 15:02 ?642次閱讀
    <b class='flag-5'>Python-</b>字典

    Python-字符串

    字符串就是 一串字符 ,是編程語言中表示文本的數據類型,在Python中使用一對雙引號 "" 或者一對單引號來定義.
    的頭像 發表于 02-16 15:05 ?1173次閱讀
    <b class='flag-5'>Python-</b>字符串

    如何搭建Python編程環境

    Python是一種高級編程語言,被廣泛用于科學計算、數據分析、人工智能、Web開發等領域。想要學習Python編程,首先需要搭建一個合適的編程
    的頭像 發表于 04-14 12:07 ?5197次閱讀

    網絡工程師學Python-遠程連接管理Telnet

    Python Telnet是一種用于遠程連接和管理網絡設備的Python庫。
    的頭像 發表于 04-28 09:47 ?960次閱讀

    如何使用Python進行神經網絡編程

    。 為什么使用PythonPython是一種廣泛使用的高級編程語言,以其易讀性和易用性而聞名。Python擁有強大的庫,如TensorFlow、Keras和PyTorch,這些庫提
    的頭像 發表于 07-02 09:58 ?423次閱讀

    Python編程:處理網絡請求的代理技術

    網絡編程中,代理技術扮演著至關重要的角色,尤其在處理網絡請求時。通過代理服務器,我們可以實現請求的轉發、緩存、負載均衡以及安全控制等功能。Python作為一種功能強大的
    的頭像 發表于 11-12 07:23 ?204次閱讀
    主站蜘蛛池模板: 天天射天天草| 免费观看欧美一级高清| 激情综合五月亚洲婷婷| 巨乳色最新网址| 九色欧美| www.毛片在线观看| 午夜影视体验区| 色综合天天| 国产午夜视频在线观看第四页| 精品视频一区在线观看| 色多多免费观看在线| 婷婷色激情| 日韩三级在线观看视频| 男人不识本网站上遍色站也枉然| 久久婷婷色| 6080伦理久久亚洲精品| 天天干天天操天天爱| 国产午夜精品一区二区| 欧美黑人性受xxxx喷水| 欧美视频免费一区二区三区| 一级a毛片免费| 色福利在线| 好色999| 欧美日韩一级视频| 亚洲三级毛片| 色我网站| 黄色a∨| 天天爽夜夜爽一区二区三区| 久久久久久人精品免费费看| eeuss影院www影院夜场| 高清视频一区二区三区| 涩涩高清无乱码在线观看| 久久综合一| 午夜国产在线| 日处女穴| 一级视频在线观看| 欧美一级视频免费看| 99国产精品农村一级毛片| 4hc44四虎www视频| 毛片8| 免费污视频在线|