三 bind 函数
该函数功能是将创建好的套接字绑定到本地的某个地址和端口上。
函数声明:
int bind(SOCKET s,const struct sockaddr FAR* name,int namelen
参数说明:
s:指定要绑定的套接字;
name:指定本地地址信息,这是一个指向sockAddr结构的指针变量,由于该地址结构是以地址家族准备的,这个结构随所使用的网络协议不同而不同。
四 sockaddr结构的介绍。
sockaddr 结构的声明:
struct sockaddr {
unsigned short sa_family;
char sa_data[14];
};
说明:
sa_family :地址家族,IP地址家族的值只能设为AF_INET
sa_data : 占位作用,要求一块内存空间,可以用该区域指定与协议相关的具体信息。
五 sockaddr_in结构体
在其于TCP/IP编程时,可以使用此结构体来替换sockaddr结构体。
struct sockaddr_in{
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
说明:
sin_family:地址家族,同样对于IP地址,该值一直设置为AF_INET.
sin_port :Ip端口,用于分配给socket的端口号。
sin_addr:Ip地址,给于socket的主机IP地址。
sin_zer : 点位,目的使sockaddr_in与sockaddr长度一致。
六 listen函数
该函数是将指定的socket设为监听模式
int listen(
SOCKET s,
int backlog
);
参数说明:
s:是套接字描述
backlog:是等待连接队列的最大长度,如果设置为SOMAXCONN,那么下层的服务提供者将负责将这个套接字设置为最大的合理值。注意的是,设置这个值是为了设置等待连接队列的最大长度,而不是在一个端口上同时可以进行连接的数目。如,将backlog设为2时,当有3个请求同时到时,前两个连接被放到等待的队列中,而有一个请求被拒绝请求。之后依然可以请求。
七 accept函数
该函数接受客户端发送的连接请求。
SOCKET accept(
SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen
);
参数说明:
s: 套接字描述符,该套接字已经为通过listen函数将其设置为监听状态;
addr:是指向一个缓冲区的指针,该缓冲区用来连接实体的地址,也就是当客户端向服务器发起连接,服务器端接受这个连接时,保存发起连接的这个客户端的IP地址信息与端口信息;
addrlen:一个返回值,指向一个整型的指针,返回包含地址信息的长度。
八:send函数
该函数通过一个已建立的套接字发送数据。
int send(
SOCKET s,
const char FAR* buf,
int len,
int flags
);
参数说明:
s: 是一个已建立连接的套接字;
buf:指向一个缓冲区,该缓冲区包含将要传递的数据。
len:是缓冲区的长度;
flags:设定的值将影响函数的行为,一般将其设置为0即可。
九:recv函数
该函数从一个已建立的套接字里接收数据。
int recv(
SOCKET s,
char* buf,
int len,
int flags
);
参数说明:
s:已建立连接的套接字。
buf:是指向一个缓冲区的指针,用来保存接受到的数据。
len:缓冲区的长度。
flags:与send函数中的flags参数是相同的!