資料報套接字實現廣播通訊 網路通訊

2021-10-12 09:41:21 字數 1985 閱讀 1199

ip:識別主機

埠號:識別程序

網路基礎-協議:

網路介面層(鏈路層)【物理層,資料鏈路層】

網路層傳輸層

應用層【會話層,表示層,應用層】

通過網路完成程序間的通訊方式

本質是程式設計介面(api):是socket對tcp/ip協議的封裝

三個步驟:服務監聽,客戶端請求,連線確認

建立socket:

import socket

#匯入套接字模組

s = socket.socket(socket.af_inet, socket.sock_stream)

#s此時是乙個socket物件,擁有傳送和接收網路資料的功能

​該函式帶有兩個引數(引數必須寫)

af_inet(ipv4協議⽤於 internet 程序間通訊)

套接字型別, 可以是 sock_stream(流式套接字, ⽤於tcp 協議) 或者 sock_dgram(資料報套接字,⽤於 udp 協議)

tcp慢但是穩定不會丟資料,傳輸控制協議

udp快但是可能會丟資料(黑客攻擊),使用者資料報協議

確定了ip位址埠號(ipv4協議),tcp或udp協議之後,計算機之間可以進行通訊

傳送資料

from socket import *

​s=socket(af_inet,sock_dgram) #建立套接字

addr=('192.168.1.105',8080) #準備接受方位址

data=input('請輸入:')

s.sendto(data.encode('gb2312'),addr)

#傳送數時,python3需要將字串轉換成byte

#encode('utf-8')用utf-8進行編碼,獲得byte型別物件

#dencode()反過來

s.close()

給飛秋傳送訊息

飛秋使用:2425埠

傳送普通資料,飛秋不會響應,必須傳送特殊格式的內容1:123123:吳彥祖:吳彥祖-pc:32:haha飛秋有自己的應用層協議

1,表示版本

後面的數字傳送的時間,隨便寫

32代表傳送訊息

飛秋炸彈:迴圈不延時發訊息(可能會造成卡死)

注意:ip和埠在網路通訊中缺一不可,用到的協議也要匹配,例如飛秋用的是udp協議,使用tcp協議發資料是無效的

udp理解為寫信(只有收件人位址),tcp理解為打**(先撥號建立通路,需要通路穩定)

from socket import *

​s=socket(af_inet,sock_dgram) #建立套接字

addr=('192.168.1.105',2425) #準備接受方位址

# data=input('請輸入:')

s.sendto('1:123:亢森檳:小亢的電腦:32:你好'.encode('gb2312'),addr)

#傳送數時,python3需要將字串轉換成byte

#encode('utf-8')用utf-8進行編碼,獲得byte型別物件

#dencode()反過來

s.close()

接收資料

from socket import *

s=socket(af_inet,sock_dgram)

addr=('192.168.1.105',8080)

#傳送資料

data=input('請輸入:')

s.sendto(data.encode('gb2312'),addr)

#接收資料

redata=s.recvfrom(2048)

print(redata[0].decode('gb2312'))

s.close()

IPC 資料報套接字通訊

前一篇文章,linux程序間通訊 使用流套接字介紹了一些有關socket 套接字 的一些基本內容,並講解了流套接字的使用,這篇文章將會給大家講講,資料報套接字的使用。一 簡單回顧 什麼是資料報套接字 socket,即套接字是一種通訊機制,憑藉這種機制,客戶 伺服器 即要進行通訊的程序 系統的開發工作...

資料報套接字

又稱udp套接字,它以資料報的方式傳輸資料。特點 面向無連線的 不可靠的 資料報套接字 注意 udp沒有3次握手,4次揮手。服務端流程 客戶端流程 socket af inet,soct dgram 建立udp套接字 socket af inet,soct dgram 建立udp套接字 bind 繫...

Linux程序間通訊 使用資料報套接字

前一篇文章,linux程序間通訊 使用流套接字 一 簡單回顧 什麼是資料報套接字。socket,即套接字是一種通訊機制,憑藉這種機制,客戶 伺服器 即要進行通訊的程序 系統的開發工作既可以在本地單機上進行,也可以跨網路進行。也就是說它可以讓不在同一臺計算機但通過網路連線計算機上的程序進行通訊。也因為...