Menu Home

网络

部署servlet

OS : ubuntu 12.04 Tomcat : tomcat7 进入Tomcat7默认安装目录为/var/lib/tomcat7 cd /var/lib/tomcat7 进入webapps,并在该目录下新建一个自己的项目名称 cd webapps mkdir streamserver #这里自己取的项目名为streamserver 进入streamserver,新建WEB-INF目录 cd streamserver mkdir WEB-INF 在WEB-INF目录中需要建立一些固定的目录和web.xml文件 cd WEB-INF mkdir classes #所有要用到的java类都要放到这里 touch web.xml 拷贝项目的类文件到classes目录 classes中的目录结构需要跟项目的目录结构一致,这里假设类名为net.lnmcc.streamserver.StreamServer cp -av projectpath/bin/net/lnmcc/streamserver/* /var/lib/tomcat7/webapps/streamserver/WEB-INF/classes/net/lnmcc/streamserver/ 编写web.xml文件 <?xml version=”1.0″ encoding=”utf-8″?> <web-app xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” version=”3.0″ metadata-complete=”true”> <display-name>Welcome to StreamServer</display-name> <description> […]

[转]RTSP交互命令简介及过程参数描述

Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一 种可扩展的框架,使能够提供可控制的,按需传输实时数据,比如音频和视频文件。源数据可以包括现场数据的反馈和存贮的文件。rtsp对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,rtsp作用相当于流媒体服务器的远程控制。传输数据可以通过传输层的tcp,udp协议,rtsp也提供了基于rtp传输机制的一些有效的方法。 RTSP消息格式

linux c 使用socket处理HTTP请求

#include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <time.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/select.h> #define BUFSIZE 4096 int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr; charhttpRequest[BUFSIZE], buf[BUFSIZE]; bzero(httpRequest, sizeof(httpRequest)); //构建请求信息,这里请求http://192.168.2.184:8090/test.flv,这是一个由ffserver搭建的流媒体服务 strcat(httpRequest, “GET /test.flv HTTP/1.1\n”); strcat(httpRequest, “Host: 192.168.2.184:8090\n”); strcat(httpRequest, “User-Agent: Mozilla/5.0 (X11; […]

linux网络编程: AF_INET, AF_INET6, AF_UNSPEC

int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; ai_family参数指定调用者期待返回的套接口地址结构的类型。 它的值包括三种: AF_INET: 函数返回IPV4相关的地址信息 AF_INET6: 函数返回IPV6相关的地址信息 AF_UNSPEC: 函数返回的是适用于指定主机名和服务名且适合任何协议族的地址 如果某个主机既有AAAA记录(IPV6)地址,同时又有A记录(IPV4)地址,那么AAAA记录将作为sockaddr_in6结构返回,而A记录则作为sockaddr_in结构返回。 ref: http://blog.sina.com.cn/s/blog_8184e033010134c4.html

MediaPlayer(一)——处理网络音频文件

Android MediaPlayer状态转换图 activity_main.xml: <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” android:orientation=”vertical” tools:context=”.MainActivity” > <TextView android:id=”@+id/TV01″ android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Status :” /> <TextView android:id=”@+id/statusTV” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Unknown” /> <TextView android:id=”@+id/bufferPercentTV” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Buffer Percentage : ” /> <ProgressBar android:id=”@+id/bufferSB” android:layout_width=”fill_parent” android:layout_height=”wrap_content” style=”@android:style/Widget.ProgressBar.Horizontal” android:max=”100″ /> <Button android:id=”@+id/startBtn” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Start” /> <Button android:id=”@+id/stopBtn” android:layout_width=”wrap_content” android:layout_height=”wrap_content” […]

tcpdump命令

ref : http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例 默认启动 tcpdump 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。 监视指定网络接口的数据包 tcpdump -i eth1 如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。

linux socket常规操作(备忘)

/*server*/ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/socket.h> #include <sys/wait.h> #define PORT 3333 #define BACKLOG 10 #define DATASIZE 10 int main(int argc, char **argv) { int sockfd, client_fd; struct sockaddr_in serv_addr; struct sockaddr_in remote_addr; char buf[DATASIZE]; int recv_len; if((sockfd […]

来自Google Facebook等知名互联网公司的系统扩展经验

本文出自澳大利亚一位ID为Dodgy Coder的程序员2012年4月的博客文章。他从High Scalability上整理和总结了Google、YouTube、Twitter、Amazon、Ebay、Facebook和Instagram等7家知名互联网的系统扩展经验。值得注意的是,有些资料时过境迁,已经不再反映最新情况,但是核心的理念和许多具体经验还是非常宝贵的学习资料,值得一读。 不难发现,这7个公司都有以下共同的6大理念: 1.    保持简单——随着时间推移,复杂性会自然出现。 2.    自动化一切——包括灾难恢复。 3.    不断迭代——想扩展到更高水平?必须准备好忍痛弃用现在能工作的某个组件。 4.    选择合适的工具——但也不怕自己动手打造。 5.    使用缓存——在适当的地方。 6.    根据场景,在数据的一致性和可用性之间做取舍。 下面来分别看一下7大公司的经验吧。

linux c获取系统网卡信息

OS:ubuntu 12.04 int getNetCardCount() { int nCount = 0; FILE *file = fopen(“/proc/net/dev”, “r”); if(!file) { debug(“Open /proc/net/dev failed by %s !\n”, strerror(errno)); return nCount; } char szLine[512]; fgets(szLine, sizeof(szLine), file); fgets(szLine, sizeof(szLine), file); while(fgets(szLine, sizeof(szLine), file)) { char szName[128] = {0}; sscanf(szLine, “%s”, szName); int nLen = strlen(szName); if(nLen <= […]

android 自动设置mtu

android 自动设置mtu os : android 4.0.4 kernel : 3.0.8 重新挂载system目录为可读: mount -o remount,rw /system 在/system/etc/ip-up 文件中加入下面这行(NAME是你需要设置mtu的设备,如eth0, ppp0等): /system/bin/ifconfig $NAME mtu 1400 注:如果你使用了busybox,需要使用下面的命令: busybox ifconfig $NAME mtu 1400

确定wifi网卡是否支持hostap

确定wifi网卡是否支持hostap 对老网卡(没有使用mac80211驱动的) ethtool  -i  wlan0 sudo iwconfig wlan0  mode  master 输出: Error for wireless request “Set Mode” (8B06) : SET failed on device wlan0 ; Invalid argument. 表示不支持 对新网卡(使用mac80211驱动的) iw list  |  grep Supported   输出: * AP 表示支持hostap

iptables 代理上网

iptables 代理上网 OS : opensuse 11.4 需求 eth0 (出外网) : 192.168.1.105   gataway : 192.168.1.1 wlan0 : 192.168.8.1 解决方法 echo 1 > /proc/sys/net/ipv4/ip_forward iptabes -t nat -A POSTROUTING -o eth0 -s 192.168.80/24 -j SNAT –to 192.168.1.105