本文共 823 字,大约阅读时间需要 2 分钟。
调试媒体服务器遇到被叫端媒体流抖动问题,需先从网络问题与服务器代码两个方面排查。为便于调试,我编写了一个UDP发送的小工具,支持根据指定IP、端口和发送时长,按照20ms间隔重复发送RTP流。
编程思路:
以下是具体实现代码片段:
memset(buf, 1, sizeof(buf));char *desip = argv[1];int destport = atoi(argv[2]);int sec = atoi(argv[3]);int count = sec * 1000 / 20;int fd = -1;fd = socket(AF_INET, SOCK_DGRAM, 0);fcntl(fd, F_SETFL, O_NDELAY);int reuse_addr_flag = 1;int success = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse_addr_flag, sizeof(reuse_addr_flag));if (success < 0) { perror("udp setsockopt(SO_REUSEADDR): "); close(fd); return 0;}int sendBufSize, sendBufLength;sendBufSize = 4;
以上代码实现了UDP套接字的创建与配置,确保了发送操作的高效性。通过设置SO_REUSEADDR选项,可以避免由于本地端口未释放而导致的发送失败。
转载地址:http://llkfk.baihongyu.com/