![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SOCKET编程学习每一步
文章平均质量分 73
fengbangyue
做一个真实的自我
展开
-
声明在学习SOCKET
学习SOCKET编程已经有很长很长的时间了,但可能是由于个人比较浮躁吧,很难静下心来仔细地学。在这样浮躁下去,我怕要转行了,哈哈。 以前学习总是,在对基本的SOCKET函数都还没有了解完,我有开始学习SOCKET编程模型,对编程模型理解得一知半解的时候,又去看什么DDK编程什么的。恩,到现在回过头一看,什么都忘得干干尽尽带了。下面重新对SOCKET编程进行一个系统的学习,不把一个阶段吃原创 2009-11-10 22:22:00 · 1038 阅读 · 0 评论 -
MySQL源码中处理客户端不同地址族的源码
在ws2def.h文件中定义的结构:typedef struct sockaddr_storage { ADDRESS_FAMILYss_family; // addressfamily CHAR __ss_pad1[_SS_PAD1SIZE]; // 6 byte pad, thisis to make原创 2011-06-18 12:15:00 · 957 阅读 · 0 评论 -
MySQL查看接收缓冲区数据长度
源码如下:/** Retrieve the amount of data that can be read from a socket. @param vio A VIO object. @param bytes[out] The amount of bytes available. @retval FALSE Success.原创 2011-06-18 10:38:00 · 1778 阅读 · 0 评论 -
MySQL判断是否有数据可读源码
/** Indicate whether there is data to read on a given socket. @note An exceptional condition event and/or errors are interpreted as if there is data to read. @param sd原创 2011-06-18 11:23:00 · 853 阅读 · 0 评论 -
MySQL中表字段结构和行字段结构学习
在MySQL中对C/C++编程时使用的结构体MYSQL_FIELD、MYSQL_ROWS的实际原型定义如下:typedef struct st_mysql_field MYSQL_FIELD;typedef struct st_mysql_rows MYSQL_ROWS; typedef struct st_mysql_field { char *name;原创 2011-06-16 19:44:00 · 3336 阅读 · 0 评论 -
hostent 和in_addr结构
今天在要获取主机IP地址时,大概步骤记得是调用gethostname() 和gethostbyname(),但是当用gethostbyname得到hostent这个结构的一个指针时,却不知道该咋办了。忘了这个结构都有哪些成员了。失败 struct hostent { char *h_name; //主机的正式名称 char **h_aliases; //主机的别名,一个主机可以有多个别名所以用了字符串指针原创 2010-06-07 22:48:00 · 5133 阅读 · 0 评论 -
心跳包机制
今天在群里看见这一词,Google了一下:原文:http://www.cppblog.com/tx7do/archive/2009/11/09/100513.html心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TC转载 2010-05-30 11:11:00 · 1951 阅读 · 0 评论 -
WinSock重叠IO模型一
WinSock的重叠IO模型也就是重叠IO的一个特例罢了。其实就是把套接字当成文件来操作。在重叠IO中,如果读大文件的时候,为了不在那里干等。告诉系统,我先去下两盘象棋,你读完了,告诉我一下。下棋时窗口是全屏的,读完后,弹一个对话框出来告诉我下吧。恩,下棋,真是浪费时间的事,得戒掉啊。 WinSock中的重叠模型也是如此,告诉系统,有人发数据过来的时候通知我哈。我现在干点别的事太无聊了原创 2010-05-29 07:13:00 · 4313 阅读 · 2 评论 -
WSAEventSelect函数模型
现在,终于有点理解循序渐进的意思了。已经说过,我在开始学习VC的时候就对SOCKET编程进行了学习。当时也就是把函数给认识了那么几个,那么多参数,那么多结构的。也记不清楚。合上书后,就知道有这么几个模型,让我写出具体的编程步骤都写不来。但是,现在来看,就不是那么难了。就其原因,我没有按规矩办事吧。现在想来很简单。只要我们对WINDOWS的消息机制熟练的掌握了。对于昨天所说的WSAAsync原创 2010-05-27 22:55:00 · 5093 阅读 · 3 评论 -
WSAAsyncSelect函数模型
以前学习的时候,看到select模型。说可以跨平台,哇,觉得真的很不错,学了它我可以在WINDOWS上和UNIX上都可以编程了。该模型就是神啊。其实,一直在犯一个错误。大多数时候,编程都是基于某一个平台的,而起某些基于某一平台的东西往往在效率上要比那些非专业的要强一些。select在WINDOW中的所有网络模型中,其效率应该算最低的了。恩,以前我还一直拿着不放呢。跨平台,多好啊,但是只是自己原创 2010-05-27 01:07:00 · 2444 阅读 · 0 评论 -
关于SOCKET中send和recv函数的说明收藏(转载)
对于send函数: send函数只负责将数据提交给协议层。 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR; 如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据; 如果是就等待协议把数据发送完,如果协议还没有开始转载 2009-11-21 05:19:00 · 1125 阅读 · 0 评论 -
SOCKET学习第三阶段(SELECT模型)
/*2009-11-18 20:57:05AUTHOR:BY.Feng*/SELECT套接字模型的学习Winsock提供了五种类型的套接字I/O 模型,可让Winsock应用程序 对I/O 进行管理,它们包括:select(选择)、WSAAsyncSelect(异步选择)、 WSAEventSelect(事件选择)、overlapped(重叠)以及completion port (完成端口)原创 2009-11-18 23:50:00 · 1182 阅读 · 0 评论 -
SOCKET学习第一阶段(下)
2009-11-12 21:35:58 BY.Feng 一、 int PASCAL FAR setsockopt( SOCKET s, int level, int optname, const char FAR* optval, int optlen); 设置套接口的选项。 s:标识一个套接口的描述字。 level:选项定义的层次;目前仅支持SOL_SOCKET和I原创 2009-11-13 00:15:00 · 1006 阅读 · 0 评论 -
SOCKET学习第一阶段(上)
/*22:28 2009-11-10Author: byFeng*/在对学习SOCKET前段规划中,第一步是对SOCKET编程中要用到的函数进行一个系统的认识。当然,由于我不是从零开始学习SOCKET,对于一些函数只是简单的罗列或对以前用到时候没有注意到的一些参数作用进行记录。对没有用过或是认为很重要但已经忘得差不多的会详细记录下来。开始学习了: 1、WSAStartupThe Wi原创 2009-11-12 01:45:00 · 2293 阅读 · 1 评论 -
MySQL在Windows平台下通信方式
在Windows平台下,MySQL可以使用三种方式和客户单通信。分别是套接字(SOCKET)、管道(Pipe)、共享内存(ShareMemory).而到底使用哪种方式,MySQL在编译的时候就已经决定了,在vio.c文件中会对通信方式进行初始化(vio_init函数,见后面),而对于不同类型的通信方式肯定会有不同的函数定义了,这些指针函数就定义在viosocket.c当中。这其中又有连个原创 2011-06-18 15:00:00 · 1088 阅读 · 0 评论