本文实例讲述了python socket模块实现的udp通信功能。分享给大家供大家参考,具体如下:
socket介绍
socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 socket 来完成通信的,例如我们每天浏览网页、qq 聊天、收发 email 等等。
模拟udp_socket客户端(发送端):udp_client.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#coding=utf-8
import socket
# 获取本机的ip地址
def get_addr():
# 获取本机计算机名称
hostname = socket.gethostname()
# 获取本机ip并返回
return socket.gethostbyname(hostname)
# 创建udp套接字,
# af_inet表示ip地址的类型是ipv4,
# sock_dgram表示传输的协议类型是udp
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 要发送的信息
test_data = raw_input ( '请输入要发送的消息:' )
print 'send_data = ' , test_data
# 要发送的ip地址和端口(元组的形式)
host = get_addr()
test_addr = (host, 8080 )
print 'send_addr = ' , test_addr
print 'prepare to send ------'
# 发送消息
udp_socket.sendto(test_data, test_addr)
# 关闭套接字
udp_socket.close()
print 'send end ------'
|
模拟udp_socket套接字服务端(接收端):udp_server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# coding=utf-8
import socket
# 获取本机的ip地址
def get_addr():
# 获取本机计算机名称
hostname = socket.gethostname()
# 获取本机ip并返回
return socket.gethostbyname(hostname)
# 创建udp套接字,
# af_inet表示ip地址的类型是ipv4,
# sock_dgram表示传输的协议类型是udp
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 绑定本地信息,若不绑定,系统会自动分配
host = get_addr()
bind_addr = (host, 8080 )
print 'bind_addr = ' , bind_addr
udp_socket.bind(bind_addr) # ip和port,ip一般不用写,表示本机的任何一个ip
# 等待接收数据
revc_data = udp_socket.recvfrom( 1024 ) # 1024表示本次接收的最大字节数
# 打印接收到的数据
print 'revc_data = ' , revc_data
print 'data = ' , revc_data[ 0 ]
print 'ip_port = ' , revc_data[ 1 ]
# 关闭套接字
udp_socket.close()
|
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/xuezhangjun0121/article/details/88782852