网络编程之Udp发送数据-创新互联

demo:编写程序

创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为邻水企业提供专业的网站制作、做网站,邻水网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

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()

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:网络编程之Udp发送数据-创新互联
文章链接:http://ybzwz.com/article/ceoiss.html