受欢迎的博客标签

c++ socket编程实战系列(1):c++ socket 编程需要掌握的基础知识

Published

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++: