黑马程序员--套接字

来源:互联网 发布:淘宝评价差评怎么写 编辑:程序博客网 时间:2024/04/27 04:18

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! -----------------------


socket概念

socket的应为原意为“孔”或“插座”。作为进程通信机制,取后一个意思。通常也称作“套接字”,用于描述IP地址和端口,是一种通信链的句柄。其实就是两个程序通信用的。

socket非常类似于电话插座。以电话网为例,电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。任何用户在通信之前,首先要占用一部电话机,相当于申请一个socket;同时要知道对方号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤销连接。

在internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。

两种类型:

1.流式socket(stream)

是一种面向连接的socket,针对与面向连接的tcp服务应用,安全,当时效率低。

2.数据报式socket(datagram)

是一种无连接的socket,对应于无连接的udp服务应用,不安全(丢失,顺序混乱,在接收端要分析重排,要求重发),效率高


socket一般应用模式(服务端和客户端)


1.服务端welcomeing socket 开始监听端口(负责监听客户端连接信息)

2客户端client socket连接服务端指定端口(负责接收和发送服务端消息)

3.服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)


服务器端的socket(至少需要两个)

 一个负责接收客户端连接请求

每成功接收到一个客户端的连接便在服务端产生一个对应的socket

1.在接收到客户端连接是创建(不负责通信)

2为每个连接成功的客户端创建一个对应的socket(负责和客户端通信)

客户端的socket

必须指定要连接的服务端地址和端口

通过创建一个socket对象来初始化一个到服务器端的tco连接


socket的通讯过程

 服务器端

1申请一个socket

2.绑定到一个IP地址和一个端口上

3开启监听,等待接收连接

客户端

1申请一个socket

2连接服务器(指明ip地址和端口号)

服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原侦听socket继续侦听

socket通信基本流程图


---------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net

原创粉丝点击