您的位置:首页 > 理论基础 > 计算机网络

基于TCP和UDP的套接字编程步骤学习

2015-01-30 10:27 155 查看
为了可以方便地开发网络程序,Berkeley在UNIX上推出了一种应用程序访问通信协议的操作系统调用的套接字(socket),这样程序员就可以方便地访问TCP/IP。

为了在Windows操作系统上使用套接字,微软和第三方厂商共同制定了一套标准即Windows Socket,简称WinSock。

所谓套接字,实际上是指向传输提供者的句柄。套接字可以分为3种,原始套接字,流式套接字和数据包套接字。

原始套接字

原始套接字是在WinSock2规范中提出的,它能够使程序开发人员对底层的网络传输机制进行控制,在原始套接字下接收的数据中包含IP头。

流式套接字

流式套接字提供了双向,有序,可靠的数据传输服务,该类型套接字在通信前,需要双方建立连接。(TCP协议就是流式套接字)

数据包套接字

UDP协议提供的是数据包套接字,支持数据的双向传输,但是不能保证数据传输的可靠性,有序性和无重复性。

基于TCP面向连接的socket编程的服务器端口流程如下:

1.创建套接字socket。

2.将创建的套接字bind到本地地址和端口上。

3.设置套接字的状态为监听状态(listen),准备接受客户端的连接请求。

4.接受请求(accept),同时返回得到一个用于连接的新套接字。

5.使用这个新套接字进行通信(通信函数使用send/recv)。

6.通信完毕,释放套接字资源。

基于TCP面向连接的socket编程的客户端流程如下:

1.创建套接字socket。

2.想服务器发出连接请求(connect).

3.请求连接后与服务器进行通信操作(send/recv)。

4.释放套接字资源(closesocket)。

在服务器一端,当调用套接字accept函数时,程序就会进行等待,直到客户端调用connect函数发送连接请求,然后服务器接受该请求,这样服务器与客户端就建立了连接,当连接建立完成后就可以进行通信了。

备注:对于客户端来说,当发起连接请求被接受以后,在服务器端就保存额该客户端的IP地址和端口号的信息,可以利用返回的套接字进行与客户端的通信。

UDP套接字的socket编程

采用UDP进行通信时,不需要建立连接,可以直接向一个IP地址发送数据但是不能保证对方能收到。

UDP面向无连接的socket编程的发送端程序流程如下:

1.创建套接字socket。

2.将套接字bind到一个本地地址和端口上。

3.等待接收数据(recvfrom)

4.释放套接字资源(closesocket)

UDP面向无连接的socket编程的接收端程序如下:

1.创建套接字socket。

2.面向服务器发送数据(sendto)。

3.释放套接字资源(closesocket)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: