120702-1 RTP接收

照猫画虎,东拼西凑的代码。

总结

1.python 开始很方便的,就是有些不知从何下手的感觉

2.基础知识没有,连字符串和列表也分不清楚

3.在shell中执行后,使用ctrl+C 终止如何释放UDP的占用?

 

#!/bin/python
# -*- coding: cp936 -*-


#最简单的udpserver

import os
import sys
import logging
import socket
import binascii

logger = logging.getLogger("udp server")
logger.setLevel(logging.DEBUG)

ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
ch.setFormatter(formatter)
logger.addHandler(ch)
"""
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
"""

 


   
"""
分析收到的数据包,避免拆包。

"""
def analy_data(data):
    try:
        nalu_head=data[16:20]
        #print nalu_head
        #print binascii.b2a_hex(nalu_head[0]),binascii.b2a_hex(nalu_head[1]),binascii.b2a_hex(nalu_head[2]),binascii.b2a_hex(nalu_head[3])
        print ''.join(['%02x ' %ord(c) for c in data[0:32]]) #列表解析
    finally:       
        return 0 #收到完整数据包


def udpserver(port):
    try:
        s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        s.bind(("",port))
        total_data=''
        while True:
            data,addr = s.recvfrom(8192)
            if not data: break
            total_data = total_data + data
            res = analy_data(total_data)
            if res==0:
                total_data=''
    finally:               
        s.close()
       

 

   
"""

def main( argv ):

    listener = Listener( 7070 )
   
    debug( "waiting for a client" )
   
    try:
        while 1:
            client = listener.waitforclient()
            client.start()

    finally:
        listener.stop()
"""

if __name__ == "__main__":
    logger.info("start udp at 2500")
    udpserver(2500)
   

转载于:https://my.oschina.net/u/33520/blog/64761

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值