2012年10月18日
摘要: STL的find_if函数功能很强大,可以使用输入的函数替代等于操作符执行查找功能(这个网上有很多资料,我这里就不多说了)。比如查找一个数组中的奇数,可以用如下代码完成(具体参考这里:http://www.cplusplus.com/reference/algorithm/find_if/):#include <iostream>#include <algorithm>#include <vector>using namespace std;bool IsOdd (int i) { return ((i%2)==1);}int main () { vecto 阅读全文
posted @ 2012-10-18 21:17 Mike_Zhang 阅读(2150) 评论(5) 推荐(2) 编辑
  2012年10月15日
摘要: 这段时间在开发代理服务器,这方面的资料了解的比较多,这里我总结下udp代理服务的实现,也方便我以后查阅。一、通信模型1、非代理情况下的通信模型这是典型的C-S通信模型,客户端和服务器直接交互。2、代理情况下的通信模型这种情况下,服务器和客户端不是直接交互,而是通过代理服务器进行的,代理服务器负责把客户端发来的请求转发给服务器,并把服务的回应返回给客户端。二、UDP服务器和客户端demo上面分析了通信模型,这里给出一个echo的服务器和客户端代码以供下文使用。1、服务端demo这里有一个python实现的echo服务器,代码如下:#! /usr/bin/python# a simple udp 阅读全文
posted @ 2012-10-15 00:19 Mike_Zhang 阅读(8944) 评论(0) 推荐(0) 编辑
  2012年10月9日
摘要: 我之前的一篇文章(http://www.cnblogs.com/MikeZhang/archive/2012/03/07/socketRedirect.html )中介绍过用python写的一个简单的http端口转发程序,其实那个也算是个代理服务器,只是功能比较简单罢了。由于这段时间在开发代理服务器,接触到各个方面的资料,这里总结下,也方便我以后使用。一、netcat实现网址:http://netcat.sourceforge.net/ netcat是个很强大的工具,在网络工具中有“瑞士军刀”美誉,不懂的搜索下,我就不多说了,相关用法可参考这里:http://en.wikipedia.org. 阅读全文
posted @ 2012-10-09 23:48 Mike_Zhang 阅读(11709) 评论(7) 推荐(2) 编辑
  2012年10月3日
摘要: 经常用wireshark写一些如下的表达式进行过滤和特定主机的通信:ip.src==192.168.1.100 or ip.dst==192.168.1.100如图所示:由于wireshark中的Filter框的下拉列表只有两个历史记录(这个暂时没有找到配置的地方……),如果涉及的主机比较多的话,需要每次输入过滤器中的ip(或者更改),感觉比较麻烦。由于这段时间经常用,发现一个小技巧,这里写出来分享给大家,不足之处欢迎指出。我们可以看到,在Filter框的右侧有个Save按钮:点击Save按钮,弹出如下对话框(我填了“Filer100”):点击OK后,发现在右侧出现了个Filter100的按钮 阅读全文
posted @ 2012-10-03 10:01 Mike_Zhang 阅读(2215) 评论(0) 推荐(0) 编辑
  2012年9月30日
摘要: STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,以供以后参考。首先提一下STL中string的参考资料:http://www.cplusplus.com/reference/string/string/ ,不懂的朋友可以看下。在数据传输中,二进制数据的buffer一般用系统预设的大数组进行存储,而不是STL的string等,比如:const int max_length = 1024 * 1024;unsigned char data[max_length];因为二进制数据中可能会包含0x00(即:'\0' 阅读全文
posted @ 2012-09-30 23:20 Mike_Zhang 阅读(5928) 评论(0) 推荐(0) 编辑
  2012年9月24日
摘要: 这段时间涉及到RTSP代理的问题,感觉VLC做这方面的demo比较好,这里总结下,也方便我以后查阅。环境:DarwinStreamingServer 6.0.3 + VLC 2.0.3我之前的一篇文章(http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer20120909.html )中介绍过怎样用vlc搭建简单流媒体服务器,其实这里也只是把sample1.avi替换成rtsp链接罢了,本文中只以RSTP的方式示例。界面操作方式这里主要介绍下服务器的搭建,客户端就不介绍了,不懂的朋友参考我这篇文章:http: 阅读全文
posted @ 2012-09-24 00:19 Mike_Zhang 阅读(5470) 评论(3) 推荐(1) 编辑
  2012年9月22日
摘要: 用过python的朋友应该知道,python的string中有个replace函数,其功能是实现字符串的替换,默认情况下是替换所有,如果加入参数的话会根据设定的个数进行替换,比如下面的例子:>>> import string>>> str1 = "ab1ab2ab3ab4">>> print string.replace(str1,"ab","cd")cd1cd2cd3cd4>>> print string.replace(str1,"ab", 阅读全文
posted @ 2012-09-22 22:44 Mike_Zhang 阅读(7759) 评论(9) 推荐(1) 编辑
  2012年9月16日
摘要: 通常情况下rtsp协议中数据传输的实现是UDP,因工作需要,想让rtsp的数据传输部分用TCP实现。DarwinStreamingServer服务器能自适应客户端发起的数据传输请求是用TCP方式,还是用UDP方式,这里唯一需要解决的是客户端协议的发起问题,而vlc支持RTSP over TCP的方式。剩下的问题就好办了,让vlc以TCP的方式发起连接即可。DSS的安装配置我就不介绍了,不懂的朋友网上查下。方式一:TCP传输媒体数据我之前的文章(http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer201209 阅读全文
posted @ 2012-09-16 23:05 Mike_Zhang 阅读(18578) 评论(0) 推荐(4) 编辑
摘要: 周末了,也该把上周工作中用到的雕虫小技整理下,写成博客,也方便我以后查阅。最近需要用ffmpeg进行视频转码,考虑到ffmpeg这个工具本身支持多线程,而服务器也是多核的,想最大程度发挥服务器的计算能力。显然不能用单线程了,但是线程并不是越多越好,需要找到个平衡点。这就需要用time命令进行计时,并将该屏幕的输出重定向到文件,以便后期进行分析。ffmpeg编码的介绍网上有很多,我这里也有些示例(http://www.cnblogs.com/MikeZhang/archive/2012/07/17/videoCodec.html 中的“三、视频编码工具 ”中有介绍)。今天主要介绍下ffmpeg的 阅读全文
posted @ 2012-09-16 11:30 Mike_Zhang 阅读(14417) 评论(12) 推荐(1) 编辑
  2012年9月9日
摘要: 这段时间用到了流媒体数据传输的TCP和UDP方式,感觉vlc可以做这方面的demo,这里总结下,也方便我以后查阅。 简介 VLC主页:http://www.videolan.org VLC不仅仅是个播放器,也可以作为流媒体服务器使用。这个网上有相关的资料,我就不多说了。 声明下本文用的VLC版本:2 阅读全文
posted @ 2012-09-09 12:17 Mike_Zhang 阅读(89587) 评论(21) 推荐(20) 编辑
  2012年9月7日
摘要: linux下写服务端程序免不了用到命令行参数,这里我总结下C语言、bash脚本、python和go语言中的使用方法,也方便我以后查阅。这里我主要用的是getopt这个函数,首先看看c语言中的定义。头文件:#include<unistd.h>函数定义:int getopt(int argc,char * const argv[ ],const char * optstring); extern char *optarg; extern int optind, opterr, optopt;说明: getopt函数是用来分析命令行参数的,参数argc和argv是由main()传递的参数 阅读全文
posted @ 2012-09-07 00:45 Mike_Zhang 阅读(6283) 评论(0) 推荐(3) 编辑
  2012年9月3日
摘要: 服务器端配置1、安装openvpnrpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpmyum install openvpn -y当然也可以从这个页面下载:http://openvpn.net/index.php/download.html 2、配置服务器2.1 初始化服务端cd /etc/openvpn/cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf .mkdir -p easy 阅读全文
posted @ 2012-09-03 23:33 Mike_Zhang 阅读(1650) 评论(1) 推荐(1) 编辑
  2012年8月30日
摘要: 这几天用到了raw socket,用python写了些demo程序,这里记录下,也方便我以后查阅。 首先我们看一个简单的sniffer程序: 这里直接用raw socket接收数据,直接print操作。这个就几行代码,也没什么好解释的了,不懂的google下。 得到IP数据包后,接下来的工作就是对I 阅读全文
posted @ 2012-08-30 00:31 Mike_Zhang 阅读(8176) 评论(15) 推荐(2) 编辑
  2012年8月23日
摘要: 之前用bash实现过(http://www.cnblogs.com/MikeZhang/archive/2012/08/22/linesCountBash20120822.html ),不过那个不能在windows下使用,所以就写了个python版,也方便我以后使用……这里就不多介绍了,不懂的google下。实现代码#!/usr/bin/python''' File : count.py Author : Mike E-Mail : Mike_Zhang@live.com'''import sys,osextens = [".c&quo 阅读全文
posted @ 2012-08-23 21:46 Mike_Zhang 阅读(2886) 评论(7) 推荐(0) 编辑
摘要: 用python遍历文件夹很方便,在go的世界里,我也需要这样的功能。找了找文档,里面有这个功能(具体参考这里:http://golang.org/pkg/path/filepath/ )……好,不废话了,我也想早点睡,直接上代码。代码如下:/*File : getFilelist.goAuthor : MikeE-Mail : Mike_Zhang@live.com*/package mainimport ( "path/filepath" "os" "fmt" "flag")func getFilelist(pa 阅读全文
posted @ 2012-08-23 01:08 Mike_Zhang 阅读(8195) 评论(3) 推荐(0) 编辑