选择显示字体大小

winsocket编程之套接字原理

[文章信息]作者:petery时间:2003-07-29出处:论坛责任编辑:方舟[文章导读]在tcp/ip网络中两个进程间的相互作用的主机模式是客户机/服务器模式......

一、客户机/服务器模式

在tcp/ip网络中两个进程间的相互作用的主机模式是客户机/服务器模式(client/server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:

首先服务器方要先启动,并根据请示提供相应服务:(过程如下)

1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。

2、等待客户请求到达该端口。

3、接收到重复服务请求,处理该请求并发送应答信号。

4、返回第二步,等待另一客户请求

5、关闭服务器

客户方:

1、打开一通信通道,并连接到服务器所在主机的特定端口。

2、向服务器发送服务请求报文,等待并接收应答;继续提出请求……

3、请求结束后关闭通信通道并终止。

二、基本套接字

为了更好说明套接字编程原理,给出几个基本的套接字,在以后的篇幅中会给出更详细的使用说明。

1、创建套接字——socket()

功能:使用前创建一个新的套接字

格式:socket pascal far socket(int af,int type,int procotol);

参数:af: 通信发生的区域

type: 要建立的套接字类型

procotol: 使用的特定协议

2、指定本地地址——bind()

功能:将套接字地址与所创建的套接字号联系起来。

格式:int pascal far bind(socket s,const struct sockaddr far * name,int namelen);

参数:s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。

其它:没有错误,bind()返回0,否则socket_error

地址结构说明:

struct sockaddr_in

{

short sin_family;//af_.net

u_short sin_port;//16位端口号,网络字节顺序

struct in_addr sin_addr;//32位ip地址,网络字节顺序

char sin_zero[8];//保留

}

3、建立套接字连接——connect()和accept()

功能:共同完成连接工作

格式:int pascal far connect(socket s,const struct sockaddr far * name,int namelen);

socket pascal far accept(socket s,struct sockaddr far * name,int far * addrlen);

参数:同上

4、监听连接——listen()

功能:用于面向连接服务器,表明它愿意接收连接。

格式:int pascal far listen(socket s, int backlog);

5、数据传输——send()与recv()

功能:数据的发送与接收

格式:int pascal far send(socket s,const char far * buf,int len,int flags);

int pascal far recv(socket s,const char far * buf,int len,int flags);

参数:buf:指向存有传输数据的缓冲区的指针。

6、多路复用——select()

功能:用来检测一个或多个套接字状态。

格式:int pascal far select(int nfds,fd_set far * readfds,fd_set far * writefds,

fd_set far * exceptfds,const struct timeval far * timeout);

参数:readfds:指向要做读检测的指针

writefds:指向要做写检测的指针

exceptfds:指向要检测是否出错的指针

timeout:最大等待时间

7、关闭套接字——closesocket()

功能:关闭套接字s

格式:bool pascal far closesocket(socket s);


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons