網(wǎng)絡(luò)編程之Udp發(fā)送數(shù)據(jù)

demo:編寫程序

在網(wǎng)站制作、成都網(wǎng)站建設(shè)中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站建設(shè)十余年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

linux中寫程序不一定用pycharm

用pycharm或者vim或者sublime編輯器

Sublime編輯時:保存到一定次數(shù)是會提醒是否購買;右下角按鈕可以選擇語言;鼠標移動到上方會看到菜單欄,“首選項”中有配色方案-改完之后菜單欄如果不見了,重新開一下;支持拖放文件夾到編輯器左側(cè);

Sublime中

Sublime中保存:CTRL+S

按住Ctrl和加號:放大字體

**

Udp發(fā)送數(shù)據(jù)

1. 代碼大概結(jié)構(gòu)如下:

import socket

def main():

#創(chuàng)建一個udp套接字

udp_socket=socket.socket(socket.af_inet,socket.sock_dgram)

#可以使用套接字收發(fā)數(shù)據(jù)

#關(guān)閉套接字

udp_socket.close()

if__name__=”__main__”:

main()

寫完程序后運行,與pycharm中不同:

打開終端,cd到py文件所在的文件夾,vim 文件名.py python3 文件名.py

如果用python2運行,Python 文件名.py 現(xiàn)在都用python3

網(wǎng)絡(luò)編程之 Udp發(fā)送數(shù)據(jù)

運行測試完成后,接下來用vim打開文件 用vim編輯:

用sublime編輯的用 vim打開,縮進的有點多,

vim縮進命令如下:

ESC 進入命令模式,大V, 上下鍵 選中一片, shift+< 向左縮進,向右縮進shift+>

因為文件中沒有任何顯示運行的命令,所以終端中無法看到程序是否能正常運行,回到文件,增加一個測試命令:print(——run——)

小程序用終端和vim 大工程用pycharm

2. 完成發(fā)送功能:

在編輯模式下,敲完udp 然后Ctrl n會出現(xiàn)自動補全,上下鍵選彈出的內(nèi)容,選中后回車

import socket

def main():

#創(chuàng)建一個udp套接字

udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#可以使用套接字收發(fā)數(shù)據(jù)

#兩個參數(shù),第一個是內(nèi)容,第二個是一個元組(ip,port),

#port是一個數(shù)字,不要用雙引號,ip要用雙引號擴起來。

#udp_socket.sendto(“hahahah”,對方的ip和port)

# 此時,用這個電腦來發(fā)給另外一臺電腦來驗證程序,

# 比如自己的ubantu發(fā)給自己的windows,但是windows中需要有個程序來接收,

#利用課程發(fā)的網(wǎng)絡(luò)調(diào)試助手用來接收數(shù)據(jù)。

udp_socket.sendto(“hahahah”,(“192.168.33.53”,8080))

#關(guān)閉套接字

udp_socket.close()

if__name__=”__main__”:

main()

然后在終端中python3 文件名.py運行

此時報錯了,提示第9行是字符串“hahaha”,解決方案,前面加b,就不是字符串了b “hahaha”

再次運行時仍報錯,顯示網(wǎng)絡(luò)不錯,因為windows的ip是192.163.33.53,ubantu的ip是172.16.7.137,兩個ip前三個字段不同,不在同一個網(wǎng)絡(luò)里。

此時在ubantu終端中輸入命令:ping 192.168.33.53,如果ping能通,說明可以通信,否則不能通信。如果ping不成功,改成橋接。菜單欄中“虛擬機”-“設(shè)置”-“網(wǎng)絡(luò)適配器”-“自動檢測”點終端上門的按鈕,選擇“橋接模式”,然后回到終端ifconfig

如果網(wǎng)絡(luò)還不通,在ubantu終端輸入命令:sudo dhclient 等待分配IP 如果是橋接模式,一般分配的ip會與windows在同一個網(wǎng)絡(luò)號。再ping一下Windows的ip,如果出現(xiàn)消耗了多少時間,說明此時可以通信了。

如果測試中出現(xiàn)問題,是因為電腦中裝了vmware,導致一臺電腦中有多個ip,此時將VMware的網(wǎng)絡(luò)斷開就可以通信了。

注意:udp_socket.sendto(b“hahahah”,(“192.168.33.53”,8080)) 中寫ip時,ip要寫Windows的,不管Windows中的網(wǎng)絡(luò)調(diào)試助手中顯示的ip是多少,要通過Windows開始中cmd命令,ipconfig出來的ip才是真正要接收數(shù)據(jù)的ip

Ubantu終端中: Python3 :進入交互模式 exit( )退出交互,用來驗證某些知識點 Python3

文件名.py:運行這個文件 ipython3也是交互模式,比python3高端,能自動補全,支持清屏,ls,建議使用ipython3

Ubantu終端中:復制文件命令,cp 01-socket的基本使用.py 02-發(fā)送任意數(shù)據(jù)給Windows中的調(diào)試助手.py

意思就是把01文件復制一份,重命名為02

3. 通過鍵盤獲取發(fā)送內(nèi)容來發(fā)送任意信息

然后vim 02-XXXX打開之后的程序與剛才一模一樣,代碼如下:

import socket

def main():

#創(chuàng)建一個udp套接字

udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#從鍵盤獲取數(shù)據(jù),就可以實現(xiàn)發(fā)送任意數(shù)據(jù)了,并用send_data變量存儲,

send_data = input(“請輸入你要發(fā)的信息:”)

#可以使用套接字收發(fā)數(shù)據(jù),此處就不能在變量前加b了,把這句代碼變成注釋,yy p復制這句代碼,重新編輯

#udp_socket.sendto(b“hahahah”,(“192.168.33.53”,8080))

#input獲取的東西是以字符串存儲的,不能直接把b“hahahah”換成send_data,用encode(“utf-8”)方法

udp_socket.sendto(send_data.encode(“utf-8”),(“192.168.33.53”,8080))

#關(guān)閉套接字

udp_socket.close()

if__name__=”__main__”:

main()無錫婦科檢查醫(yī)院 http://www.87554006.com/

**4. 循環(huán)發(fā)送數(shù)據(jù)

以上代碼可以完成發(fā)送任意信息,但是如果想循環(huán)發(fā),需要while true,

終端中: cp一份02文件,cp 02xx.py 03循環(huán)發(fā)送數(shù)據(jù).py vim 03…打開,ESC V 選中一段代碼,shift >

整體向右縮進

保存并退出vim編輯器,按esc進入命令模式后,輸入:wq,一定 要輸入冒號

import socket

def main():

#創(chuàng)建一個udp套接字

udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

while true:

#從鍵盤獲取數(shù)據(jù),就可以實現(xiàn)發(fā)送任意數(shù)據(jù)了,并用send_data變量存儲,

send_data = input(“請輸入你要發(fā)的信息:”)

udp_socket.sendto(send_data.encode(“utf-8”),(“192.168.33.53”,8080))

#關(guān)閉套接字

udp_socket.close()

if__name__=”__main__”:

main()

終端中:

運行程序進行測試,如果要結(jié)束程序,ctrl c

**5 帶有退出功能的循環(huán)發(fā)送

cp 03 04帶有退出功能的循環(huán)發(fā)送.py

import socket

def main():

#創(chuàng)建一個udp套接字

udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

while true:

#從鍵盤獲取數(shù)據(jù),就可以實現(xiàn)發(fā)送任意數(shù)據(jù)了,并用send_data變量存儲,

send_data = input(“請輸入你要發(fā)的信息:”)

#如果輸入的數(shù)據(jù)是exit,那就退出程序,break是直接退while,continue是退出這一次,后面的繼續(xù)執(zhí)行,然后再while true

If send_data ==”exit”:

break

udp_socket.sendto(send_data.encode(“utf-8”),(“192.168.33.53”,8080))

#關(guān)閉套接字

udp_socket.close()

if__name__=”__main__”:

main()

網(wǎng)站標題:網(wǎng)絡(luò)編程之Udp發(fā)送數(shù)據(jù)
本文來源:http://muchs.cn/article16/jehigg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google品牌網(wǎng)站建設(shè)、ChatGPT、全網(wǎng)營銷推廣、定制開發(fā)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)