Delphi实现winsock编程之一(winsock概述及其加载)
2010-12-23 14:41
357 查看
Winsock是Windows实现socket端口的标准API,它从BSD Socket(套接字中)继承了大量的特性。有点需要说明的是Winsock并不是网络协议。Winsock目前为止有两个主要版本Winsock1和Winsock2。(winsock1往往会省略掉后面的1,本文也遵从此默认规则)。到目前为止Windows98以后的Windows版本(包括windows nt4.0)都支持winsock2,而windows95和windows CE却只支持Winsock1。
Delphi默认只支持Winsock1。此时只需要在 uses字段中引入 Winsock。
首先在调用winsock前,需要加载Winsock的DLL版本,如果加载错误则返回一个SOCKET_ERROR错误信息为WSANOTINITIALISED。加载winsock库通过调用WSAStartup函数实现,此函数的格式如下:
改代码就是启动winsock 1.1版本,并提示。
Delphi默认只支持Winsock1。此时只需要在 uses字段中引入 Winsock。
代码1.1
uses Windows, Messages, SysUtils, Classes, WinSock;
而Winsock2需要额外的支持。Winsock2可以从http://www.wesoho.com/article.asp?id=1811下载。
winsock1相对简单。我们的例子从Winsock1开始说起。
首先在调用winsock前,需要加载Winsock的DLL版本,如果加载错误则返回一个SOCKET_ERROR错误信息为WSANOTINITIALISED。加载winsock库通过调用WSAStartup函数实现,此函数的格式如下:
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer; stdcall;
如果加载成功,则会在WSData中填充相关数据,其中TWSAData的定义如下: [code] WSAData = record // !!! also WSDATA wVersion: Word; wHighVersion: Word; szDescription: array[0..WSADESCRIPTION_LEN] of Char; szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char; iMaxSockets: Word; iMaxUdpDg: Word; lpVendorInfo: PChar; end; TWSAData = WSAData;
简单说明此字段的作用
wVersion为即将使用winsock版本。wHighVersion为现有Winsock库的最高版本,其中高字节为winsock次版本,低字节为winsock主版本。
szDescription和szSystemStatus为描述和特殊设置,并无实际含义。
iMaxSockets和iMaxUdpDg为同时打开的最大套接字数和数据报最大长度。(在现实使用中此两数据会受物理条件和使用协议限制)
lpVendorInfo目前保留。
看以下代码
if WSAStartup($0101,aWSAData)<>0 then begin MessageBox(Handle,'不能启动winsock动态链接库!','错误',MB_OK); Exit; end; MessageBox(Handle,aWSAData.szDescription,'WinSock 态链接库版本',MB_OK);
改代码就是启动winsock 1.1版本,并提示。
相关文章推荐
- Delphi编程实现显示桌面功能
- skiplist 跳表详解及其编程实现
- Delphi中实现加载INF驱动程序!
- FP编程实践:CPS编程风格及其C++模拟实现
- 高斯图像滤波原理及其编程离散化实现方法
- delphi编程CRC算法的实现,以下是全部的代码
- Delphi编程实现Ping操作
- Java并发编程:Synchronized及其实现原理
- Java并发编程:Synchronized及其实现原理
- MapReduce编程模型及其在Hadoop上的实现
- 游戏编程常用TGA图像格式详解以及加载纹理编程实现
- 用多线程枝术实现Winsock编程
- Delphi实现串口编程收发短信
- Delphi Socket 实现编程(4)
- Spring标签@Aspect-实现面向方向编程(@Aspect的多数据源自动加载)——SKY
- skiplist 跳跃表详解及其编程实现
- 基于Winsock 的小型网络管理系统及其实现
- java编程加载窗口,实现物体变速运动(台球的运动)
- DLL系列------编程实现感染PE文件加载DLL
- Delphi编程实现程序快捷方式[原创]