1.了解socket
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
见:Socket通信原理探讨(C++为例)
https://blog.csdn.net/u012736279/article/details/45221865
2.了解socket编程经常用到的几个类
网上有各种用socket编程的源码,我们来梳理一下,
2.1 确定选择哪种通信类库编程
windows socket通信编程可以采用以下两种方式:
2.1.1 socket
直接用socket编程,需要懂得客户端和服务端一收一发的整个通信原理。
2.1.2 CAsyncSocket,CSocket
CAsyncSocket和CSocket 是在socket基础上封装的第三方类库。
CAsyncSocket和CSocket 对应 wsock32.dll 、 socket 对应ws2_32.dll。
三者关系为:socket->CAsyncSocket->CSocket
2.2 确定选择阻塞或非阻塞方式
比如一个数据库访问,在传统的阻塞I/O中其运行过程是这样的
int num=query('select * from ......');
print(num);
print方法必须等待query方法返回结果.
而在非阻塞I/O中是这样的
query('select * from...',callback(data){
.............//相关语句
print();
});
在回调函数中处理结果,但是不影响下面语句执行
2.3 确定多客户端情况下使用线程来处理还是非线程方式
3.c++的基础知识
c :已实现函数功能为主。
c++:已面向对象为主。
vc ++:在windows环境下,经常要用到图形。vc++就是在c++的基础上加了windows图形处理功能。你可以理解为vc++=c++ 加上 c++。如MFC
vs c++: