随笔分类 - socket
存放一些我学习网络编程的知识,感悟
摘要:这篇文章源于我看libevent的源码时想到的问题,对于libevent的buffer机制,如果接受端一直不取数据的话,会怎样?如果丢包,不现实,因为会导致数据丢失,如果不丢包,就会导致占用内存一直扩大。 由此我想到对于tcp/udp如果一直发,接收端不调用recv取数据会怎样,是会导致send失败
阅读全文
摘要:recv是可以用在UDP套接字上的,前提是该套接字调用过bind或者connect,那它用在TCP和UDP套接字上时有什么区别呢? 下面做一个测试,分别使用UDP、TCP实现一对C/S、客户端发送12字节数据,服务器接受的时候用10字节大小的buffer去接受。 TCP tcpSvr: tcpCli
阅读全文
摘要:写在前面的话:因为自己是才接触网络编程,在工作中第一次遇到粘包问题,我还不知道它是叫粘包问题,所以被整的晕头转向,百思不得其解,自己的代码到底哪里出了问题,最后只能单步调试程序才发现接收方接收到的数据并不一定是按自己设想那样,一次接收整个数据包,当时就想到用文件长度来判断是否接收完文件,之后读了UN...
阅读全文
摘要:写在前面的话:功能是基于C/S模型的网络传输实现,要求是服务器端可以在局域网中任何机子上运行,客户端启动后自动寻找服务器端进行连接,之后,服务器端向已经连接的客户端发送命令,客户端根据命令执行相应的操作(即发送某个约定文件夹下的所有文件),并且客户端不需要用户操作。1、思路首先,对于这个功能的实现思...
阅读全文
摘要:转载自:GetLastErrorGetLastErrorGetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数 并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值,也不能 担保函数已成功执行。只有在函数...
阅读全文
摘要:重点介绍一个MFC中CSocket类的使用1、创建套接字使用CSocket类创建套接字对象是通过该类的构造函数创建的。其原型如下:1 CSocket::CSocket();例如,用户创建CSocket类对象,代码如下:1 CSocket sock;如果用户需要创建套接字对象指针,则应该使用关键字ne...
阅读全文
摘要:Visual C++的MFC提供了CSocket类用来实现网络通信。下面介绍VC++在Windows 95中实现Socket的 CSocket 类相关成员函数(这些成员函数实际上是从CAsyncSocket 类继承来的)的使用。(1) BOOL Create( UINT nSocketPort = ...
阅读全文
摘要:许多时候我们实现网络编程使用的是winsock api函数,虽然这些函数使用起来也很方便,很灵活,但是VC++的MFC类库中提供了CAsyncSocket这样一个套接字类,用它来实现socket编程会更方便。1、服务器端 项目:CSockServerServer端的编程与Client端的类似,下面主...
阅读全文
摘要:WSAAsyncSelect模型是winsock编程模型的一种,它提供了socket异步编程的方便,其实现是基于Windows消息机制的,最主要的就是下面这个函数:1 int PASCAL FAR WSAAsyncSelect (SOCKET s,HWND hWnd,unsigned int wMs...
阅读全文
摘要:1、服务器端代码 1 #pragma comment(lib, "ws2_32.lib") 2 3 #include 4 #include 5 6 using namespace std; 7 8 bool LoadSockLib() 9 {10 WSADATA wsaData;1...
阅读全文
摘要:1、socket编程首先要做的就是加载库,有两种方法:1.不需要加载库文件if(!AfxSocketInit()) { AfxMessageBox("加载套接字库失败!"); return false; }如果是VC++编程的程序,此代码片需要放在App类的I...
阅读全文