python网络编程--创建简单的UPD套接字实现两个进程间互相通信

Socket

什么是socket

Socket通常又称“套接字”,应用程序通常会通过“套接字”实现向网络发出请求或者相应网络请求,从而实现不同计算机之间或同一计算机的不同进程之间的相互通信

socket()函数

在python中,通过socket()函数来创建套接字,语法格式如下:

socket.socket(family,type,proto)

family:套接字的家族,一般分为AF_UNIX 和 AF_INET,通常情况AF_INET使用的多一些

type:套接字类型,一般分为SOCK_STREAM 和 SOCK_DGRAM,如果是创建基于TCP协议的套接字则用SOCK_STREAM,如果创建的是基于UDP的套接字则用SOCK_DGARM

proto:默认为0

Socket内建函数

socket有很多内建函数,这里只讲解一下我们将要用到的几个函数

bind():绑定地址到套接字,参数是元组类型,(ip,port)

sendto():用于发送UPD数据,将数据发送给套接字,address的形式为(ipaddr,port)的元组形式,指定接收信息的地址,返回值是发送的字节数

recvform():用于接收UPD数据,返回值是一个包含数据和发送地址元组(data,address)

close():关闭套接字,在完成一次发送和接收数据后一定要关闭套接字

代码实例

创建两个文件一个用于发送数据的sender.py和一个用于接收数据的receiver.py。代码如下:

# sender.py

from socket import *

udp= socket(AF_INET,SOCK_DGRAM)
udp.bind(('',7788))#绑定IP和端口,IP为空则表示是本机,端口7788

data = input("请输入要发送的内容:")
upd.sendto(data.encode('utf-8'),('10.34.2.92',7789))#要发送的数据,和接收数据的地址,内容需要编码,防止出现乱码

udp.close()#关闭套接字
#receiver.py

from socket import *

udp = socket(AF_INET,SOCK_DGRAM)
udp.bind(('',7789))

print("等待接收消息")
content ,addr = udp.recvfrom(1024)

print("消息来自:【%s:%s】" % (addr[0],addr[1]))
print(content.decode('utf-8'))#需要解码,防止出现乱码

udp.close()#关闭套接字

运行代码

打开两个命令行窗口并切换到两个文件所在的目录,

其中一个输入:python sender.py 回车,这时会提示输入要发送的内容,可以随便输入一些数据

另外一个输入:python receiver.py 回车,这时就会接收到来自sender.py发送的数据了。

你可能感兴趣的:(技术,人生苦短,我用python,python网络编程,套接字,socket,upd,通信)