用vc++6.0 sockets api实现聊天室程序
1.vc++网络编程及windows sockets api简介 【程序编程相关:[ASP.NET]使用C#开发Socke】 【推荐阅读:[ASP.NET]一个实用的弹出窗口函数】2.windows socket机制分析 【扩展信息:FAQ:如何访问WebBrowser的滚】
vc++对网络编程的支持有socket支持,wininet支持,mapi与isapi支持等.其中,windows sockets api是tcp/ip网络环境里,也是internet上进行开发最为通用的api.最早美国加州大学berkeley分校在unix下为tcp/ip协议开发了一个api,这个api就是著名的berkeley socket接口(套接字).在桌面操作系统进入windows时代后,仍然继承了socket方法.在tcp/ip网络通信环境下,socket数据传输是一种特殊的i/o,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用-socket().可以这样理解:socket实际上是一个通信端点,通过它,用户的socket程序可以通过网络与其他的socket应用程序通信.socket存在于一个"通信域"(为描述一般的线程如何通过socket进行通信而引入的一种抽象概念)里,并且与另一个域的socket交换数据.socket有三类.第一种是sock_stream(流式),提供面向连接的可靠的通信服务,比如telnet,http.第二种是sock_dgram(数据报),提供无连接不可靠的通信,比如udp.第三种是sock_raw(原始),主要用于协议的开发与测试,支持通信底层操作,比如对ip与icmp的直接访问.
2.1一些基本的socket系统调用
主要的系统调用包括:socket()-创建socket;bind()-将创建的socket与本地端口绑定;connect()与accept()-建立socket连接;listen()-服务器监听是否有连接请求;send()-数据的可控缓冲发送;recv()-可控缓冲接收;closesocket()-关闭socket.
2.2windows socket的启动与终止
启动函数wsastartup()建立与windows sockets dll的连接,终止函数wsaclearup()终止使用该dll,这两个函数必须成对使用.
2.3异步选择机制
windows是一个非抢占式的操作系统,而不采取unix的阻塞机制.当一个通信事件产生时,操作系统要根据设置选择是否对该事件加以处理,wsaasyncselect()函数就是用来选择系统所要处理的相应事件.当socket收到设定的网络事件中的一个时,会给程序窗口一个消息,这个消息里会指定产生网络事件的socket,发生的事件类型与错误码.
2.4异步数据传输机制
... 下一页