Windows下Socket编程
构架
- 服务器构架
- 加载库资源–WSAStartup
- 创建socket–socket
- 绑定地址信息–bind
- 监听–listen
- 获取监听队列第一个连接处理–accept
- 发送数据–send
- 接收数据–recv
- 关闭sock–socketclose
- 卸载库–WSACleanup
- 客户端构架
- 加载库资源–WSAStartup
- 创建socket–socket
- 连接服务器–connect
- 发送数据–send(tcp)/sendto(udp)
- 接收数据–recv(tcp)/recvfrom(udp)
- 关闭sock–socketclose
- 卸载库–WSACleanup
创建socket
//第一个参数IPV4,SOCK类型,TCP协议
//错误返回:INVALID_SOCKET ---错误返回不是SOCKET_ERROR
socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
绑定bind
存储转换函数
网络字节序大端序,计算机字节序小端序
h–主机 n–网络 s–端口 l–IP p–字符串IP
- 大端序端口 = htons (小端序端口);
- 大端序IP = htonl(小端序IP);
- 小端序端口 = ntohs(大端序端口);
- 小端序IP= ntohl(大端序IP);
- 字符串IP = inet_ntop(大端序IP);
- 大端序IP = inet_pton(字符串IP);
//第一个参数IPV4,SOCK类型,TCP协议
sockaddr_in //赋值
//套接字,IP和端口信息,大小
bind(SOCKET s,const struct sockaddr *name,int namelen);
//SOCKET_ERROR错误
监听listen
//sock 为需要进入监听状态的套接字,backlog 为请求队列的最大长度(监听最大量)。
int listen(SOCKET s,int backlog);
//SOCKET_ERROR错误
接收accept
SOCKET accept(SOCKET s,struct sockaddr *addr,int *addrlen);
//INVALID_SOCKET 错误
发送send(tcp)/sendto(udp)
int send(SOCKET s,const char *buf, int len, int flags);
//返回发送字节数
//SOCKET_ERROR 错误
接收recv(tcp)/recvfrom(udp)
int recv(SOCKET s,const char *buf, int len, int flags);
//返回接收字节数
//SOCKET_ERROR 错误
连接connect
//第一个参数IPV4,SOCK类型,TCP协议
//错误返回:INVALID_SOCKET
sockaddr_in //赋值
//套接字,IP和端口信息,大小
int connect(SOCKET s,const struct sockaddr *name,int namelen);
//SOCKET_ERROR错误
版权声明:本文为qq_43473072原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。