socket编程
来源:互联网 发布:云计算发展前景 编辑:程序博客网 时间:2024/06/06 23:07
socket编程
记住关键字:文件打开、工厂模式、TCP/IP层、服务器端与客户端、先设置socket、再使用socket。首先socket是什么呢?其实就像windows中的窗口,编程的时候其实用到的只是个句柄,同样socket函数返回一个int。就像打开文件一样返回一个文件句柄(int)另外打开文件、创建socket使用到了工厂模式即传入不同的参数就创建不一样的socket。然后还要关注TCP/IP层的问题,socket只是TCP层的东东,而他还要依赖于IP层,所以这就需要用到bind函数去绑定IP地址、端口号,这就是服务器端。而客户端就不需要bind,而是直接调用connect函数通过系统自动分配端口号,另外需要注意,connect的参数需要指定的是服务器段的IP地址、端口号。接下来就要换一个角度来说了,前面都是横向、纵向设置socket的,下面就是使用socket了,即服务器端listen上面设定好的socket,然后就是accept,注意accept函数有一个传入参数用来存取接收到的客户端的IP地址、端口号,如果对客户端的IP地址不感兴趣可以用NULL作为实参。在这里还要纠正一句话“监听某个端口”,其更准确的说法应该是,把某个socket绑定到某个端口上,然后去监听这个socket,其最终的结果就是监听了某个端口(相当于a-》b-》c结果是a-》c)。然后就是服务端、客户端的用已经连接好的socket来read和write了。最后不要忘了close。除了上面说道的主要之处还需要注意的有,大小端字节流、字符串到IP地址的转换等小技巧再来说一下应用层的协议比如rtp协议(流媒体协议)这里首先要说的是会话的概念,由于TCP是面向连接的(源到目的),所以送socket来表示着个TCP连接,而在rtp协议中,也是存在连接这个概念的,那么用什么表示这个连接的概念呢?这就是会话RTPSession(jrtplib中会话类),所以说到流媒体或者jrtplib来编程时就应该不要对RTPSession怀疑了。另外IP层是没有连接这个概念的,所以IP层就不存在会话。另一方面socket、会话自然而然的就有了面向对象的思想,这里说面向对象的思想是想说,很多开源库都多少有面向对象的思想,如PortAudio中的输入流、输出流还有speex中的SpeexBits(其实是存储压缩过后的音频的数据)等等
阅读全文
0 0
- socket编程--socket基本概念
- socket编程--socket基本概念
- socket编程
- socket编程
- Socket 编程
- socket编程
- Socket编程
- Socket编程
- Socket编程
- Socket编程
- SOCKET编程
- socket编程
- Socket编程
- socket编程
- Socket 编程
- Socket 编程
- socket 编程
- socket编程
- C 链表 树 工作原理
- C# 访问修饰符public、protected、internal、private的访问范围误区释疑
- win8没有声音怎么办?win8系统电脑没有声音的解决方法
- 扫雷游戏(第一次踩到雷不会被炸死)
- scikit-learn 中文文档-预测目标 (y) 的转换-用户指南|ApacheCN
- socket编程
- 线段树+区间xor+区间求和
- phpMysql
- HTML5(十七)
- 学习Spring框架笔记之基于xml的IOC配置
- Ajax
- 独家 | 融资2.1亿商汤领投,他要用VR+AR解决无人驾驶的路测难题
- 重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉
- 马斯克要往火星轨道送跑车,在深空待10亿年,静候外星人