1.WSAstartup (连接WinSocket库) 原型如下:
Int WSAStartup (
Word WVersionregusested,
LPWSADATA LPWSAData
);
在delphi中定义如下:
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer; stdcall;
应用程序在使用Winsock API之前必须调用此函数,只有当此函数返回(表示应用程序与Winsock库成功建立起连接),应用程序才可以调用其它 Windows Sockets DLL 中的函数.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2. WSACleanup (断开与Winsocket库的连接)原型如下:
Int WSACleanup (Void);
在Delphi中定义如下:
function WSACleanup: Integer; stdcall;
应用程序在使用完Socket库函数之后,必须使用这个函数来释放所占用的内存.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3. Socket (套接字建立函数) 原型如下
SOCKET Socket(
Int af,
int type,
int Protocol
);
在Delphi中定义如下 :
function socket(af, Struct, protocol: Integer): TSocket; stdcall;
使用该函数可以建立使用特定协议的网络套接字,例如UDP协议的写法
var
S : TSocket;
begin
WSAStartup();
S := Socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
WSACleanup;
end;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
4. bind(套接字绑定函数) 原型如下:
Int bind (
SOCKET S,
coust struct sockaddr FAR* name,
int namelen
);
在Delphi中定义如下 :
function bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer; stdcall;
s : 是通过Socket建立的套接字, addr是指向描述通讯对象的结构体(TSockAddr)的指针,namelen是TSockAddr结构体的长度
TSockAddr结构体有三个成员.
1. IP地址
2. 端口
3. 地址类型
---------------------------------------------------------------------------------------------------------------------------------------------- -------------- ---
5. listen(套接字监视函数) 原型如下:
int listen(
SOCKET s,
int backlog
);
Delphi中定义如下 :
function listen(s: TSocket; backlog: Integer): Integer; stdcall;
listen一般用于服务端程序.
s 是刚才用socket创建的套接字. backlog用于设定等待连接的客户数(目前最大值为5最小值为1)
------------------------------------------------------------------------------------------------------------------------------------------------------------------
6. accept (接受连接请求)原型如下
SOCKET accept (
SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen
);
Delphi中定义如下:
function accept(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
服务端程序用此函数来接受客户端的socket请求,accpet的返回值是一个新的socket套接字,用这个新的套接字来与当前连接的客户端通信,以前的socket套接字还会保留用来与其它客户端连接.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7. recv(接收信息)原型如下:
int recv (
SOCKET s,
char FAR* buf,
int len,
int flags
);
Delphi定义如下:
function recv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
此函数用于面向连接的Socket中,以便能从另一端接收信息.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8.Send(发送信息)原型如下:
int send (
SOCKET s
const char FAR* buf,
int len,
int flags
);
Delphi中定义如下 :
function send(s: TSocket; const Buf; len, flags: Integer): Integer; stdcall;
此函数用于面向连接的Socket中,以便于能发送信息到另一端.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
以上8个是Windows Socket 编程主要的几个函数, 慢慢学习慢慢消化吧.