socket接口使用原理

来源:互联网 发布:阿里云华东1是哪里 编辑:程序博客网 时间:2024/06/07 12:16

在上一篇文章中我写了一个socket接口的demo,并没有详细交代原理。这件事情一直惦记着,想想马上要做新的内容了。实在是忍不了这件事这样扔着半截,所以今天简单总结一下socket接口的原理。

一、原理

socket是在网络上运行在服务端和客户端的两个程序,服务端和客户端分别可以接受和发送请求给对方,这使得服务端和客户端可以很方便的发送和获取信息。是不是很赞呐!!当然,这种通讯其实都依靠着非常重要的信息——套接字。

二、套接字的定义

其实套接字这个概念很像linux的远程登录,他是区分服务端和客户端的。一台服务器,可以连接一个客户,当然也可以是多个。

socket就像是一个电话网络。只有知道区号和电话号码,才能有可能拨通电话。接电话的人可以同时接多个电话,但是打电话的人却只能打给一个人。这个时候有一个问题,多个客户端连接了同一个服务端,返回的信息各不相同,那么,服务端就必须对客户端做一个区分。这个不难,服务端会自动给每一个连接成功的客户端分配一个ip和端口,也就是说这个ip和端口客户端没办法自己定义,因为如果是自己定义的,那么就很有可能会端口冲突。

三、套接字的属性

套接字有三个属性:域、类型和协议

域:指定套接字通信中使用的网络介质,最常见的套接字域是AF_INET,它指的是Internet网络

类型:一个套接字可能有多种不同的通信方式

流套接字,流套接字提供一个有序,可靠,双向节流的链接,流套接字由类型SOCK_STREAM指定,它是在AF_INET域中通过TCP/IP链接实现的,这就是套接字类型(其实就是通信方式)

与流套接字相反,由类型SOCK_DGRAM指定的数据报套接字不建立和维持一个连接,它对可以发送的数据长度有限制,数据报作为一个单独的网络消息被传输,它可能会丢失,复制或乱序

协议:通常使用默认就可以了(也就是最后一个参数填0)

其实简单来说套接字可以理解为一个ip和端口,是服务端所运行的ip,以及他为接受信息而监听的端口。

四、客户端和服务端

这个可以参考我的另一篇博文,里面给出了demo。地址:点击打开链接


ps:小菜鸟一枚,大神如果发现表达错误,还望多多指正!!


0 0