SOCKET socket{
int af,
int type,
int protocol
};
3)Connect( )函数
该函数用来完成到指定地址的连接。说明如下:
int PASCAL FAR connect( SOCKET s, const struct sockaddr FAR* name,int namelen);
4)Send( )函数
Send( )函数作用是向已建立连接的套接字上发送数据。说明如下:
int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int flags);
5)Recv( )函数
该函数用于从已连接的套接字上接收数据。说明如下:
int PASCAL FAR recv( SOCKET s, char FAR* buf, int len, int flags);
其他函数不一一说明。
3.5 Socket的编程框架
Windows Socket应用程序最常见的是客户机/服务器模式,服务器是能够提供某种或某些功能的程序或进程;客户机是用户想使用服务器的某种或某些功能的程序或进程。在该模式中,应首先启动服务器进程,然后客户机通过网络(也可以是本机)访问服务器资源,以完成相应的操作。
通常的网络通信有两种方式,这里主要针对传输层而言,即:面向连接方式,如TCP协议;面向无连接方式,如UDP方式。但是有时为了编程方便,在使用UDP协议时采用面向连接的处理方式。
另外,针对如何处理网络请求,网络程序又可分为交互方式和并发方式。交互方式的特点是编程简单,不易出错,但是执行效率不高;相反,并发方式则相对复杂,不易控制,但是执行效率高。对于并发的实现有多种方式,其中主要的两种方式如下:
(1)创建线程为客户机服务,这里同样有以下几种方式实现:
i.为每一个客户端创建一个线程;
ii.服务器创建一定量的线程,形成一个线程池,当有客户端请求时,则分配一个线程为其服务,若没有线程可用,则客户端不得不等待,直到有其他客户端释放连接为止。
iii.服务器并不事先创建线程,而是在有客户连接到来时创建线程,线程的数量受到服务器预置值得限制。
(2)使用事件驱动方式。在一个线程内可以通过异步I/O操作方式,当有事件发生时,就触发相应的过程来处理。
  对于面向连接方式:
1)首先启动服务器方,以提供相应服务:
a) 首先调用WSAStartup( )函数来初始化网络环境;
b) 调用socket( )函数来创建一个套接字;
c) 调用bind( )函数将本地地址与刚创建的套接字关联起来;
d) 调用listen( )函数监听发向该套接字的连接请求;
e)客户端的连接请求房子连接请求队列里,服务器调用accept( )函数从连接请求队列中取出第一个请求,创建一个为之服务的新套接字,该套接字处理所有与该客户交互的操作;而服务器进程的监听套接字这时继续处理来自其他客户的连接请求,直到因队列空而等待新的连接请求的到来。
f) 调用closesocket( )关闭监听套接字,释放套接字资源;
g) 调用WSACleanup( )函数释放相应的资源。
图7进一步说明了服务器端的编程框架。
 
图7 服务器结构
2)客户端进程:
a) 首先使用WSAStartup( )来初始化网络环境;
b) 调用socket( )来创建一个套接字;
c) 调用connect( )函数连接远程服务器,以请求服务;
d) 服务器响应连接后,此时客户进程开始于服务器交互操作,直到请求结束为止;
e) 调用closesocket( )关闭套接字,释放套接字资源;
f) 调用WSACleanup( )释放相应资源。
图8进一步说明了客户端的编程框架。
 
图8 客户端编程框架
3.6 本章小结
本章对WinSock机制做了介绍,分别讲述了WinSock的描述字,Socket的系统数据结构、地址说明,几个实验中使用的重要的Socket应用程序接口,以及Socket的编程框架。本章工作是实现TRCTC算法的基础。
上一篇:MP3音乐文件解码程序设计
下一篇:C#个人事务管理系统的设计与实现+ER图

基于Apriori算法的电影推荐

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

基于网络的通用试题库系...

python基于决策树算法的球赛预测

基于消费者个性特征的化...

加密与解密算法的研究【1931字】

神经外科重症监护病房患...

国内外图像分割技术研究现状

AT89C52单片机的超声波测距...

中国学术生态细节考察《...

10万元能开儿童乐园吗,我...

承德市事业单位档案管理...

医院财务风险因素分析及管理措施【2367字】

志愿者活动的调查问卷表

公寓空调设计任务书

C#学校科研管理系统的设计