Python核心编程学习笔记-2016-08-21-03-python网络编程UDP

创建UDP服务器,伪代码如下:

ss = socket() # 创建服务器套接字
ss.bind() # 绑定服务器套接字
inf_loop: # 服务器无限循环
    cs = ss.recvfrom / ss.sendto() # 对话(接收与发送)
ss.close() # 关闭服务器套接字
       创建UDP客户端,伪代码如下:

cs = socket() # 创建客户端套接字
comm_loop: # 通讯循环
        cs.sendto() / cs.recvfrom() # 对话(发送/接收)
cs.close() # 关闭客户端套接字
        书中的两个例子:

#-*-coding: utf-8-*-

from socket import *
from time import ctime

HOST = '' # HOST变量为空,表示bind()函数可以绑定到所有有效的地址上
PORT = 21567 # 选择端口
BUFSIZ = 1024 # 设置缓冲区大小为1K
ADDR = (HOST, PORT)

udpSerSock = socket(AF_INET, SOCK_DGRAM)
udpSerSock.bind(ADDR) # 将地址绑定到套接字上, UDP是无连接的,所以无需listen()

while True:
    print "waiting for message..." # 被动等待信息传入
    data, addr = udpSerSock.recvfrom(BUFSIZ) # 接受信息传入,前一个参数就是传入信息,后一个参数是客户端的地址(主机,端口)
    udpSerSock.sendto('[%s] %s' % (ctime(), data), addr) # 处理信息,并传回客户端
    print "...recevied from and returned to:", addr
    
udpSerSock.close()    

#-*-coding: utf-8-*-

from socket import *

HOST = 'localhost' # 表示服务器主机名,由于是在同一台电脑上测试,所以HOST是本地的主机名,如果服务器在其他电脑上,则需作出相应修改
PORT = 21567 # 端口也是一样,如果服务器在其他电脑上,则需作出相应修改
BUFSIZ = 1024 # 缓冲区大小还是1K
ADDR = (HOST, PORT) # ADDR就是服务器地址

udpCliSock = socket(AF_INET, SOCK_DGRAM) # 创建UDP套接字

while True: # 进入通信循环
    data = raw_input("> ") # 客户端生成信息
    if not data: # 如果信息为空,退出通信循环
        break
    udpCliSock.sendto(data, ADDR) # 客户端将信息发送给服务器,参数分别为信息和服务器地址
    data, ADDR = udpCliSock.recvfrom(BUFSIZ) # 客户端接受服务器返回的信息和服务器地址
    if not data: # 如果服务器由于某种原因退出,即服务器返回的信息为空时,也同样退出通信循环
        break
    print data # 显示服务器返回的信息

udpCliSock.close()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值