码迷,mamicode.com
首页 > 其他好文 > 详细

Socket用法

时间:2015-06-17 13:19:53      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

1套接字(socket)概念

套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

 

2 建立socket连接

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。

客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

4、SOCKET连接与TCP连接

创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

5、Socket函数用法

在C语言socket编程中,在进行网络连接前,需要用socket函数向系统申请一个通信端口。socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket。描述符为-1表示创建失败。socket函数的使用方法如下:
  int socket(int domain, int type, int protocol);
  在参数表中,domain指定使用何种的地址类型,比较常用的有:
  PF_INET, AF_INET: Ipv4网络协议;
  PF_INET6, AF_INET6: Ipv6网络协议。
  type参数的作用是设置通信的协议类型,可能的取值如下所示:
  SOCK_STREAM: 提供面向连接的稳定数据传输,即TCP协议。
  OOB: 在所有数据传送前必须使用connect()来建立连接状态。
  SOCK_DGRAM: 使用不连续不可靠的数据包连接。
  SOCK_SEQPACKET: 提供连续可靠的数据包连接。
  SOCK_RAW: 提供原始网络协议存取。
  SOCK_RDM: 提供可靠的数据包连接。
  SOCK_PACKET: 与网络驱动程序直接通信。
  参数protocol用来指定socket所使用的传输协议编号。这一参数通常不具体设置,一般设置为0即可。

Socket用法

标签:

原文地址:http://www.cnblogs.com/cynthia116/p/4582820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!