网络编程之Udp发送数据

demo:编写程序

在网站制作、成都网站建设中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。创新互联专业成都网站建设十余年了,客户满意度97.8%,欢迎成都创新互联客户联系。

linux中写程序不一定用pycharm

用pycharm或者vim或者sublime编辑器

Sublime编辑时:保存到一定次数是会提醒是否购买;右下角按钮可以选择语言;鼠标移动到上方会看到菜单栏,“首选项”中有配色方案-改完之后菜单栏如果不见了,重新开一下;支持拖放文件夹到编辑器左侧;

Sublime中

Sublime中保存:CTRL+S

按住Ctrl和加号:放大字体

**

Udp发送数据

1. 代码大概结构如下:

import socket

def main():

#创建一个udp套接字

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

#可以使用套接字收发数据

#关闭套接字

udp_socket.close()

if__name__=”__main__”:

main()

写完程序后运行,与pycharm中不同:

打开终端,cd到py文件所在的文件夹,vim 文件名.py python3 文件名.py

如果用python2运行,Python 文件名.py 现在都用python3

网络编程之 Udp发送数据

运行测试完成后,接下来用vim打开文件 用vim编辑:

用sublime编辑的用 vim打开,缩进的有点多,

vim缩进命令如下:

ESC 进入命令模式,大V, 上下键 选中一片, shift+< 向左缩进,向右缩进shift+>

因为文件中没有任何显示运行的命令,所以终端中无法看到程序是否能正常运行,回到文件,增加一个测试命令:print(——run——)

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

2. 完成发送功能:

在编辑模式下,敲完udp 然后Ctrl n会出现自动补全,上下键选弹出的内容,选中后回车

import socket

def main():

#创建一个udp套接字

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

#可以使用套接字收发数据

#两个参数,第一个是内容,第二个是一个元组(ip,port),

#port是一个数字,不要用双引号,ip要用双引号扩起来。

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

# 此时,用这个电脑来发给另外一台电脑来验证程序,

# 比如自己的ubantu发给自己的windows,但是windows中需要有个程序来接收,

#利用课程发的网络调试助手用来接收数据。

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

#关闭套接字

udp_socket.close()

if__name__=”__main__”:

main()

然后在终端中python3 文件名.py运行

此时报错了,提示第9行是字符串“hahaha”,解决方案,前面加b,就不是字符串了b “hahaha”

再次运行时仍报错,显示网络不错,因为windows的ip是192.163.33.53,ubantu的ip是172.16.7.137,两个ip前三个字段不同,不在同一个网络里。

此时在ubantu终端中输入命令:ping 192.168.33.53,如果ping能通,说明可以通信,否则不能通信。如果ping不成功,改成桥接。菜单栏中“虚拟机”-“设置”-“网络适配器”-“自动检测”点终端上门的按钮,选择“桥接模式”,然后回到终端ifconfig

如果网络还不通,在ubantu终端输入命令:sudo dhclient 等待分配IP 如果是桥接模式,一般分配的ip会与windows在同一个网络号。再ping一下Windows的ip,如果出现消耗了多少时间,说明此时可以通信了。

如果测试中出现问题,是因为电脑中装了vmware,导致一台电脑中有多个ip,此时将VMware的网络断开就可以通信了。

注意:udp_socket.sendto(b“hahahah”,(“192.168.33.53”,8080)) 中写ip时,ip要写Windows的,不管Windows中的网络调试助手中显示的ip是多少,要通过Windows开始中cmd命令,ipconfig出来的ip才是真正要接收数据的ip

Ubantu终端中: Python3 :进入交互模式 exit( )退出交互,用来验证某些知识点 Python3

文件名.py:运行这个文件 ipython3也是交互模式,比python3高端,能自动补全,支持清屏,ls,建议使用ipython3

Ubantu终端中:复制文件命令,cp 01-socket的基本使用.py 02-发送任意数据给Windows中的调试助手.py

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

3. 通过键盘获取发送内容来发送任意信息

然后vim 02-XXXX打开之后的程序与刚才一模一样,代码如下:

import socket

def main():

#创建一个udp套接字

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

#从键盘获取数据,就可以实现发送任意数据了,并用send_data变量存储,

send_data = input(“请输入你要发的信息:”)

#可以使用套接字收发数据,此处就不能在变量前加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))

#关闭套接字

udp_socket.close()

if__name__=”__main__”:

main()无锡妇科检查医院 http://www.87554006.com/

**4. 循环发送数据

以上代码可以完成发送任意信息,但是如果想循环发,需要while true,

终端中: cp一份02文件,cp 02xx.py 03循环发送数据.py vim 03…打开,ESC V 选中一段代码,shift >

整体向右缩进

保存并退出vim编辑器,按esc进入命令模式后,输入:wq,一定 要输入冒号

import socket

def main():

#创建一个udp套接字

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

while true:

#从键盘获取数据,就可以实现发送任意数据了,并用send_data变量存储,

send_data = input(“请输入你要发的信息:”)

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

#关闭套接字

udp_socket.close()

if__name__=”__main__”:

main()

终端中:

运行程序进行测试,如果要结束程序,ctrl c

**5 带有退出功能的循环发送

cp 03 04带有退出功能的循环发送.py

import socket

def main():

#创建一个udp套接字

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

while true:

#从键盘获取数据,就可以实现发送任意数据了,并用send_data变量存储,

send_data = input(“请输入你要发的信息:”)

#如果输入的数据是exit,那就退出程序,break是直接退while,continue是退出这一次,后面的继续执行,然后再while true

If send_data ==”exit”:

break

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

#关闭套接字

udp_socket.close()

if__name__=”__main__”:

main()


本文名称:网络编程之Udp发送数据
文章网址:http://pwwzsj.com/article/jehigg.html