1.问题 :今天在一台服务器上安装live555,运行结果如下:
出现ip地址为:0.0.0.0
2.最后问题所在:
以后要注意一点就是:别从别人身上找问题,应该从自己身上找问题!不扯了。最后发现是在防火墙配置里面有问题,发现:
信任的设备中居然没有eth0。于是选择上即可,同时加上端口554.运行木有问题!
3.linux获取本机IP地址的方法
转发与:
http://jeremiah.blog.51cto.com/539865/275791
live555MediaServer读取本地IP的主要方法是:发送一个TTL=0的组播包,接收这个包,然后解析发送地址,即为本机地址。
这种方法只能获得本机的最主要的IP地址(eth0)。不能获取所有的IP地址。
抠取代码如下,操作平台为RedHat Linux ES5,gcc 4.1.2。
- /*******************************************************************************
- * Filename: get_ip.c
- * Created on: Feb 8, 2010
- * Author: Jeremiah
- * Description: 获取本机IP地址
- *
- ******************************************************************************/
- #include <stdio.h>
- #include <stdint.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <string.h>
- #include <sys/time.h>
- #include <sys/select.h>
- in_addr_t ourIPAddress();
- int setupDatagramSocket(uint16_t);
- uint8_t socketJoinGroup(int socket, uint32_t groupAddress);
- uint8_t writeSocket(int socket, struct in_addr address, uint32_t port,
- uint8_t ttlArg, unsigned char *buffer, unsigned bufferSize);
- int readSocket(int socket, unsigned char *buffer, unsigned bufferSize,
- struct sockaddr_in *fromAddress, struct timeval *timeout);
- int blockUntilReadable(int socket, struct timeval* timeout);
- uint8_t badAddress(uint32_t addr);
- uint8_t socketLeaveGroup(int socket, uint32_t groupAddress);
- uint8_t IsMulticastAddress(uint32_t address);
- #define SET_SOCKADDR_SIN_LEN(var)
- #define MAKE_SOCKADDR_IN(var,adr,prt) /*adr,prt must be in network order*/\
- struct sockaddr_in var;\
- var.sin_family = AF_INET;\
- var.sin_addr.s_addr = (adr);\
- var.sin_port = (prt);\
- SET_SOCKADDR_SIN_LEN(var);
- int main(int argc, char **argv) {
- struct sockaddr_in ourAddress;
- ourAddress.sin_addr.s_addr = ourIPAddress();
- if (ourAddress.sin_addr.s_addr == 0) {
- printf("get local ip error!\n");
- return 1;
- }
- printf("%s\n", inet_ntoa(ourAddress.sin_addr));
- return 0;
- }
版权声明:本文为onelight1997原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。