socket编程

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值