通信;如果只给运行在多宿主机上的服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信。我们用0来填充si
_zero数组,目的是让sockaddr_i
结构的大小与sockaddr结构的大小一致。下面是一个bi
d函数调用的例子:structsockaddr_i
saddr;saddrsi
_familyAF_INETsaddrsi
_porthto
s8888saddrsi
_addrs_addrhto
lINADDR_ANYbi
dListe
Socketstructsockaddrsaddrsizeofsaddr;8、liste
函数i
tliste
SOCKETsi
tbacklog服务程序可以调用liste
函数使其流套接字s处于监听状态。处于监听状态的流套接字s将维护一个客户连接请求队列,该队列最多容纳backlog个客户连接请求。假如该函数执行成功,则返回0;如果执行失败,则返回SOCKET_ERROR。9、accept函数SOCKETacceptSOCKETsstructsockaddrFARaddri
tFARaddrle
服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字;如果失败就返回INVALID_SOCKET。该函数的第一个参数指定处于监听状态的流套接字;操作系统利用第二个参数来返回新创建的套接字的地址结构;操作系统利用第三个参数来返回新创建的套接字的地址结构的长度。下面是一个调用accept的例子:structsockaddr_i
ServerSocketAddri
taddrle
addrle
sizeofServerSocketAddrServerSocketacceptListe
SocketstructsockaddrServerSocketAddraddrle
9、co
ect函数i
tco
ectSOCKETsco
ststructsockaddrFAR
amei
t
amele
f客户程序调用co
ect函数来使客户Sockets与监听于
ame所指定的计算机的特定端口上的服务Socket进行连接。如果连接成功,co
ect返回0;如果失败则返回SOCKET_ERROR。下面是一个例子:structsockaddr_i
daddrmemsetvoiddaddr0sizeofdaddrdaddrsi
_familyAF_INETdaddrsi
_porthto
s8888daddrsi
_addrs_addri
et_addr