论坛登陆 用户: 密码:
联系我们
设为首页
加入收藏
业界新闻 网络编程 程序开发 网页图象 聊天通讯 软件应用 网络安全 硬件学堂 教育频道 站长club
  ·推荐新闻
 
·美前任官员认为amd告倒英特
·搜索引擎关键字排行简介
·网站优化教程(一)
·msn近期遭受木马病毒骚扰 用
·用qq管理你的系统^_^ 
·测评中心金山毒霸联合发布7
·qq群聊实名 普通用户不受影
·雅虎思科联手推数字邮件签名
·这18条背下来没人敢和你忽悠
·自己动手,拯救丢失的硬盘数
  ·资料搜索
 
  ·相关文章
·mysql和sqlserver,到底选择谁
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
·循序渐进学习power builder 6.
  ·热门新闻

windows socket 网络编程(二)


 日期:2005-7-18 9:18:56     来源:易特网络技术   编辑:黑鹰  点击:
来源:http://www.vckbase.com/document/viewdoc/?id=484

windows socket 网络编程(二) —— 套接字编程原理
作者: 冰点工作室 小鹰

一、客户机/服务器模式
在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_inet
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);


三、典型过程图
2.1 面向连接的套接字的系统调用时序图



2.2 无连接协议的套接字调用时序图



2.3 面向连接的应用程序流程图



上一篇:windows socket 网络编程(一)
下一篇:winsock学习笔记(一)
[发送给好友] [打印本页] [关闭窗口] [返回顶部转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 黑鹰 投稿作者: 易特网络
信息来源: 易特网络技术 录入时间: 2005-7-18 9:18:56
浏览次数: 投稿信箱: shtghy@163.com
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ©2004-2005 iyit.net all rights reserved. 网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息