前几天,我听说了UDT,原来只听说过TCP和UDP,也知道各自的优缺点,UDP的优点就是传输速度快,缺点是容易丢包,收到的包也是无序的,收到之后可以通过对包排序解决;TCP的优点就是传输稳定,但是花销大,传输速度慢。
UDT是基于UDP的传输协议。UDT可以说是集合了两者的优点,有UDP的传输速度,还不会丢包,有TCP的稳定性,但传输速度快。
现在就把UDT源码下载下来,编译一下。
1.首先想了解UDT就去官网,官网网址[UDT官网:](http://udt.sourceforge.net/),里边有详细的解释、说明和最新动态。但是现在源文件的话就要去另一个网址了[UDT源码下载 ](https://sourceforge.net/projects/udt/files/latest/download?source=directory.)(我下载的是4.0版本);
2.下载成功之后解压一下,用tar -zxvf udt.sdk.4.11.tar.gz,解压到当前路径;
3.解压成功之后进去./udt4会有几个文件和目录,目录有win,src,doc,app,文件有RELEASE_NOTES.txt,README.txt,Makefile,LICENSE.txt,draft-gg-udt-xx.txt,首先进入**src**目录,将所有的.h文件拷入到/usr/include目录下,$cp *.h /usr/include;
4.将当前目录下所有的.cpp文件做成动态库,g++ *.cpp -fPIC -shared -o libudt4.so,然后将libudt4.so文件拷到/lib/目录下,cp libudt4.so /lib/;
5.这样,所有的准备工作就完成了,接下来,返回到上一个目录,进入到app目录下,这个文件是做好的简单传输编程,我们就把appserver.cpp文件和appclient.cpp文件编译一下,首先,应该编译的是server文件,g++ -o ser appserver.cpp -I ../ -lpthread -ludt4这样就行成了ser可执行文件,然后对client文件进行编译,g++ -o cli appclient.cpp -I ../ -lpthread -ludt4,这样就形成了cli可执行文件编译文件就完成了。
6.测试一下,首先把要将服务器端按启动起来,就是ser执行一下./ser,然后把客户端启动起来;![这里写图片描述](https://img-blog.csdn.net/20160530211109287)启动客户端需要参数,就是本机的IP和端口号./cli localhost 9000,因为是本机的IP,就用localhost![这里写图片描述](https://img-blog.csdn.net/20160530211124288)
最后这是连上服务器端的结果 这就表明编译成功了
最后总结一下,这个编译问题归根到底就动态库的创建与连接使用问题,本人在大二上学期学过scoket,略微接触了一下动态库与静态库,这其实就是这些问题。也没什么难的,就是这样。