选择显示字体大小

windows sockets:操作顺序

本文以对照方式阐释了服务器套接字和客户端套接字的操作顺序。因为这些套接字使用 carchive 对象,所以它们必然是流式套接字。流式套接字通信的操作顺序

在构造 csocketfile 对象之前,下面的顺序对 casyncsocket csocket 都是准确的(只有少数几个参数不同)。从构造 csocketfile 对象开始,顺序只适用于 csocket 。下表阐释了在客户端和服务器之间设置通信的操作顺序。

设置服务器和客户端之间的通信

服务器 客户端
// construct a socket

csocket socksrvr;

// construct a socket

csocket sockclient;

// create the socket

socksrvr.create(nport); 1,2

// create the socket

sockclient.create( ); 2

// start listening

socksrvr.listen( );

// seek a connection

sockclient.connect(straddr, nport); 3,4

// construct a new, empty socket

csocket sockrecv;

// accept connection

socksrvr.accept( sockrecv ); 5

// construct file object

csocketfile file(&sockrecv);

// construct file object

csocketfile file(&sockclient);

// construct an archive

carchive arin(&file,
carchive::load);

- 或 -

carchive arout(&file,
carchive::store);

- 或两者 -

// construct an archive

carchive arin(&file,
carchive::load);

- 或 -

carchive arout(&file,
carchive::store);

- 或两者 -

// use the archive to pass data:

arin >>dwvalue;

- 或 -

arout < < dwvalue; 6

// use the archive to pass data:

arin >>dwvalue;

- 或 -

arout < < dwvalue; 6

1. 这里的 nport 是端口号。有关端口的详细信息,请参见 windows sockets:端口和套接字地址。

2. 服务器必须始终指定一个端口,以便客户端可以连接。 create 调用有时也指定地址。在客户端使用默认参数,这些参数要求 mfc 使用任何可用端口。

3. 这里的 nport 是端口号, straddr 是计算机地址或网际协议 (ip) 地址。

4. 计算机地址可以采用几种形式:“ftp.microsoft.com”、“microsoft.com”。ip 地址采用“以点分隔的数字”形式,如“127.54.67.32”。 connect 函数查看地址是否为以点分隔的数字(但它不确保该数字是网络上的有效计算机)。如果不是,则 connect 使用其他某种形式的计算机名称。

5. 当在服务器端调用 accept 时,传递对新套接字对象的引用。必须首先构造该对象,但不对它调用 create 。注意,如果此套接字对象超出范围,则连接关闭。mfc 将新对象连接到 socket 句柄。可以在堆栈上构造此套接字(如表中所示)或在堆上构造。

6. 存档和套接字文件在超出范围时将被关闭。套接字对象超出范围或被删除时,对象的析构函数也对此套接字对象调用 close 成员函数。有关顺序的其他说明

上表中显示的调用顺序适用于流式套接字。数据文报套接字是无连接的,不需要 casyncsocket::connect、listen 和 accept 调用(但可有选择地使用 connect )。相反,如果正在使用 casyncsocket 类,则数据文报套接字使用 casyncsocket::sendto receivefrom 成员函数。(如果对数据文报套接字使用 connect ,则使用 send receive 。)因为 carchive 不适用于数据文报,如果套接字是数据文报,则不要使用带存档的 csocket

csocketfile 并不支持 cfile 的所有功能, cfile 成员(如 seek )对套接字通信没有意义,是不可用的。因此,某些默认 mfc serialize 函数与 csocketfile 不兼容。这对于 ceditview 类更是如此。不要试图使用 ceditview::serializeraw 通过附加到 csocketfile 对象的 carchive 对象来序列化 ceditview 数据,而应使用 ceditview::serialize (无出处)。serializeraw 函数预期文件对象具有 csocketfile 不支持的函数,如 seek

有关更多信息,请参见: windows sockets:使用带存档的套接字 windows sockets:使用 casyncsocket 类 windows sockets:端口和套接字地址 windows sockets:流式套接字 windows sockets:数据文报套接字


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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