MFC的网络编程学习摘记
来源:互联网 发布:pdf文件分割软件 编辑:程序博客网 时间:2024/06/03 14:21
Windows Socket是实现网络程序的方法之一,现对于Socket的学习经验总结如下。
1.Windows Sockets 范例定义了一套microsoft Windows 下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket 风格的库函数;也包含了一组针对Windows 的扩展库函数,以使程序员能充分地利用Windows 消息驱动机制进行编程。
2.socket通信流程.
socket是"打开—读/写—关闭"模式的实现,以使用TCP协议通讯的socket为例,其交互流程大概如下:
服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket
服务器为socket绑定ip地址和端口号
服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开
客户端创建socket
客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket
服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求
客户端连接成功,向服务器发送连接状态信息
服务器accept方法返回,连接成功
客户端向socket写入信息
服务器读取信息
客户端关闭
服务器端关闭
摘自<winsock.h>
typedef
struct
WSAData {
WORD
wVersion;
WORD
wHighVersion;
#ifdef _WIN64
unsigned
short
iMaxSockets;
unsigned
short
iMaxUdpDg;
char
FAR * lpVendorInfo;
char
szDescription[WSADESCRIPTION_LEN+1];
char
szSystemStatus[WSASYS_STATUS_LEN+1];
#else
char
szDescription[WSADESCRIPTION_LEN+1];
char
szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned
short
iMaxSockets;
unsigned
short
iMaxUdpDg;
char
FAR * lpVendorInfo;
#endif
} WSADATA;
struct
sockaddr_in
{
short
sin_family;
/*Address family一般来说AF_INET(地址族)PF_INET(协议族)*/
unsigned
short
sin_port;
/*Port number(必须要采用网络数据格式,普通数字可以用htons()函数转换成网络数据格式的数字)*/
struct
in_addr sin_addr;
/*IP address in network byte order(Internet address)*/
unsigned
char
sin_zero[8];
/*Same size as struct sockaddr没有实际意义,只是为了 跟SOCKADDR结构在内存中对齐*/
};
char
*inet_ntoa(
struct
in_addr in);
将一个IP转换成一个互联网标准点分格式的字符串。
11.listen()创建一个套接口并监听申请的连接.
第一个参数指定接收端套接字描述符;
第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;
第三个参数指明buf的长度;
第四个参数一般置0。
15.connect()用来将参数sockfd 的socket 连至参数serv_addr 指定的网络地址。参数addrlen为sockaddr的结构长度。
HIBYTE()得到一个16bit数最高(最左边)那个字节
- MFC的网络编程学习摘记
- MFC网络编程学习
- MFC网络编程学习
- MFC网络编程学习
- MFC网络编程学习
- java 网络编程 摘记1
- 《C#网络应用编程》NetworkStream类的说明摘记
- 《C++编程规范》学习摘记
- 网络摘记
- [MFC学习笔记]--网络编程理论知识
- js模块化编程require.js学习摘记
- 学习摘记
- 创建CSocket的过程,MFC网络编程
- 基于Socket的MFC网络编程
- 网络编程的学习
- 网络编程的学习
- MFC网络编程
- MFC网络编程1
- 两个UIScrollView同步滚动
- MySQL
- Swift中的基础知识总结(一)
- 十分钟搞清字符集和字符编码
- StrutsPrepareAndExecuteFilter 和 FilterDispatcher的区别
- MFC的网络编程学习摘记
- 关于CAB打包的步骤
- 使用 Docker 搭建 Java Web 运行环境
- python中的urlencode与urldecode
- 关于窗口创建的那些事 之 内核剖析 读笔
- 网卡MAC地址查询厂商
- Service启动模式
- linux下的定时任务cron
- opencv 内存中读取一段jpg 图片