
网络协议/Socket
文章平均质量分 74
讲述网络相关知识与Socket相关开发
汪宁宇
我想大抵是累了,横竖都没有精神,漫不经心的看着代码,眼皮倦倦的。仔细看了半夜的符号,才从字缝里看出来,满眼都是吃人的bug......
(有多年C/C++上下位机开发经验,熟悉三菱FX1S/1N/2N/3U、MODBUS等常见通讯协议,可兼项目顾问等方式合作有意私信!)
展开
-
VC模拟ping发送ICMP数据包
张越的那本《Visual c++网络程序设计实例详解》很好,他的代码写得很漂亮! 网络编程方面的书籍,那是遗弃许久。这一段时间再次拾起,以补不足! 这是他第一章的实例,模拟ping来发送ICMP数据包: 1、程序源码//////////////////////////////////////////////////// comm.原创 2009-08-25 10:22:00 · 11417 阅读 · 4 评论 -
套接字模式—非阻塞模式开发(2)
DOC文档 下载地址: http://download.youkuaiyun.com/source/1685795 http://www.rayfile.com/files/35f267a3-a71c-11de-bc0e-0014221b798a/原创 2009-09-22 09:41:00 · 1119 阅读 · 1 评论 -
套接字模式—非阻塞模式开发(4)—— Server
服务端代码仅四百余行,主要是AcceptThread与HelperThread两个线程函数难以理解,全部代码如下:// Server.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include原创 2009-10-02 00:01:00 · 1525 阅读 · 3 评论 -
套接字模式
1.同步I/O和异步I/O当CPU执行代码(当前活动线程)时遇上一个I/O请求(例如调用ReadFile/WriteFile或recv/send)时,系统产生一个中断,当前活动线程阻塞在此,让CPU去完成这个I/O请求,等到完成后,系统再次产生一个中断让原先的程序继续运行。也就说通过中断保持这两者间的同步。可以将终端理解为硬件化的信号量。 这就是所谓的同步I/O,一个线程中只可能原创 2009-09-17 11:12:00 · 1368 阅读 · 1 评论 -
VC显示网页验证码、模拟优快云网页登录
这两天,本来想花点时间研究一下QQ空间、农场外挂,于是抓包分析一了下,只可惜,在QQ网页登录时进行了加密处理,可惜我对网页编程一窍不通。有些朋友曾讲过那些是通过JS代码进行加密,可惜我JS也是一片空白,真是“出师未杰身先死”,惭愧惭愧...... 于是只好挑优快云这类简易一些的尝试学习一下(仅供学习交流),下面是学习笔记: 程序运行截图: 1、本机环境:Wind原创 2009-10-14 10:12:00 · 13850 阅读 · 10 评论 -
A simple Echo Server
The following simple Server opens a port on 2000 and waits for incoming connections. Each connection is answered with the same line as was written (echoed). If you want to test the server, use telne原创 2009-09-06 20:06:00 · 1060 阅读 · 1 评论 -
为网络程序添加代理设置
一、相关结构体与API: typedef struct { DWORD dwAccessType; LPCTSTR lpszProxy; LPCTSTR lpszProxyBypass;} INTERNET_PROXY_INFO, *LPINTERNET_PROXY_INFO; HRESULT UrlMkSetSessionOption( DWORD dwOpt原创 2009-09-12 15:33:00 · 5177 阅读 · 1 评论 -
VC模拟发送数据包-百度关键词查找
在慢慢看完René Nyffenegger先生的封装的Socket类后,收获不少! 在百度查找关键词abcdef: 1、在WildPackets OmniPeek里,查询关键词“abcdef”时抓包得到的信息: 2、C++源代码:/**************************************************原创 2009-09-06 16:07:00 · 3116 阅读 · 1 评论 -
C++ Socket TCP “Hello World!“
这是C++ SOCKET网络程序中的C/S结构之TCP "Hello World !",共两个控制台工程://////////////////////////////////////////////////////////////////////////// TCPServer.cpp#include #include #pragma comment(lib,"WS2_原创 2009-09-15 21:39:00 · 3183 阅读 · 4 评论 -
HTTP Post Using C
HTTP post requests are very easy to handle by using HTML forms and other languages where they are natively supported. Basically, a request is nothing but a socket-based communication between the brows转载 2009-09-12 12:57:00 · 3228 阅读 · 1 评论 -
VC直接修改IP地址(不需要重起)
设置IP地址只需要更改注册表中关于适配器的相应设置,但更改后需要重新启动系统才能生效,而AddIPAddress函数只能添加IP而不是更改当前的IP,我们在Windows NT/2000界面上操作不需要重新启动就可以生效,那系统到底做了什么额外的工作才使IP设置直接生效呢?笔者通过跟踪explorer.exe中API的调用发现在netcfgx.dll中调用了dhcpcsvc.dll中一个未公开的A原创 2009-11-14 16:37:00 · 13005 阅读 · 4 评论 -
C++实现http客户端
有兴趣看看吧~~转载 2011-05-09 23:00:00 · 6945 阅读 · 0 评论 -
C++ Socket Class for Windows
在这里,我向大家介绍关于一套C++ Socket类,让你可以轻松的在Windows程序中使用Sockets。另外,我要感谢Fabien Le Lez、www.infflux.com、和Tamas Kaskoto等一切完善这套源码的朋友。 这里实际有四个类组成: 1、Socket(基类) 2、SocketServer(派生类)翻译 2009-09-06 14:52:00 · 7793 阅读 · 1 评论 -
套接字模式—阻塞模式开发
1、阻塞模式概念 当使用socket()函数和WSASocket()函数创建的套接字时,默认都是阻塞模式的。阻塞模式是指套接字在执行操作时,调用函数在没有完成操作之前不会立即返回的工作模式。这意味着当调用Windows Sockets API不能立即完成时,线程处于等待窗台,直到操作完成。 并不是所有的Windows Sockets API以阻塞套接字为参数调用都会发原创 2009-09-20 01:17:00 · 3972 阅读 · 1 评论 -
VC POST表单——登录验证新浪邮箱
1、本机环境: Windows XP SP3、ADSL 2、开发工具: WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1871 如果觉得OmniPeek文件太大不方面下载的朋友,可以使用开源的简易抓包分析工具,先登录codepr原创 2009-10-16 16:17:00 · 29971 阅读 · 25 评论 -
VC下载文件 + 显示进度条
在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1、下载线程函数:UINT DownloadFile(LPVOID pParam){ CWnd* pwnd = AfxGetMainWnd(); CProgressCtrl* m_Prog = (CProgressCtrl*)pwnd->GetDlgItem(IDC_原创 2009-09-18 00:10:00 · 17166 阅读 · 8 评论 -
套接字模式—非阻塞模式开发(3)—— 客户端类实现
经过四个晚上的认真阅读,这套远程算术运算的代码总算全部通过,作者对于每个模块的设计深感佩服! 客户端CClient类对应每个服务器接受的客户端,为其实现接收数据、计算数据和发送计算结果的功能。 在没有完全读懂前,我确实不敢贴出来,现在既然读懂了,就贴出来大家交流一下嘛! 具体代码如下: ////////////////////////////////////////原创 2009-10-01 16:40:00 · 1569 阅读 · 1 评论 -
东莞阳光网自动投票 [VC6源码]
(真心谢谢木凡陪我们度过了这么多个夜晚,也将是为我以后人生路奠定了基础!)无聊之际,写了这样一个小程序,使用到了多线程以使程序界面消息循环与SOCKET分离开,这样程序界面不容易假死,启动后一般可以看到有6个线程启动~~~ PS:由于IIS服务器没有增加验证码,又没有限定每个IP每日投票次数,所以相当十分容易~~~ 1、源码说明: 在POST与GET抓包原创 2009-09-18 13:39:00 · 5009 阅读 · 10 评论 -
VC提交网页表单-自动评论留言(2)
前面分析完毕了,现在就开始写代码吧: 网上用SOCKET、CHttpFile类等编写VC向网页POST表单的代码多如牛毛,但大多都是大家转来转去的,也没有去实践一下,到头来只会误导初学者,这里是我从头到尾的笔记,希望给友友们帮助,以免走不必要的弯路...... (本文代码中的真实网页地址已用星号或马赛克隐藏,以避免不法份子用来恶意使用!本程序仅供学习交流,对于该站站长我原创 2009-09-07 09:56:00 · 5810 阅读 · 6 评论 -
VC提交网页表单-自动评论留言(1)
前段时间,仔细看了一个HTTP协议于是就写了这样一个自动评论的测试程序,下面是我本次学习实验的学习笔记: 一、准备工作: 1、本机环境:Windows XP SP3、ADSL 10M光纤 2、开发工具:WildPackets OmniPeek V5.1.4 Visual C++ 6.0原创 2009-09-07 09:05:00 · 8790 阅读 · 15 评论 -
套接字模式—非阻塞模式开发(1)
套接字的非阻塞模式是指套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式。非阻塞套接字在处理同时建立的多个连接,发送和接收的数据量不均、时间不定等方面具有明显的优势。但这种套接字在使用上存在一定的难度。 1、非阻塞模式 把套接字设置为非阻塞模式,即通知内核:在调用Windows Sockets API时,不要让线程睡眠,而应该让函数立即返回。在返回时原创 2009-09-21 19:57:00 · 2216 阅读 · 2 评论 -
套接字选项—修改套接字缓冲区大小
有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。 int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)int setsockopt(int sockfd,int level,int optname,const void *optval,sock原创 2009-09-19 00:18:00 · 4697 阅读 · 1 评论 -
C++ Socket UDP "Hello World!"
这是C++ SOCKET网络程序中的C/S结构之UDP "Hello World !",共两个控制台工程://////////////////////////////////////////////////////////////////////////// UDPServer.cpp#include #include #pragma comment(lib,"WS2_原创 2009-09-16 23:40:00 · 2721 阅读 · 1 评论 -
套接字模式—非阻塞模式开发(5)—— Client
客户端程序代码仅六百余行,主要是PackExpression函数,与RecvDataThread、SendDataThread这两个线程函数难以理解,全部代码如下:// Client.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include原创 2009-10-02 00:08:00 · 1585 阅读 · 3 评论 -
关于虚拟机的通讯原理
前段时间,与一哥儿们讨论这个问题的时候,让人挺纠结的。自己抽空分析了一下,下面是学习笔记: 本机环境:Windows XP SP3(IP:192.168.1.100 后续用真实机代替本环境)虚拟环境:VPC2007 (Windows Server 2003 IP:192.168.1.200 后续用虚拟机代替本环境)抓包软件:OmniPee原创 2010-04-18 13:57:00 · 3164 阅读 · 3 评论 -
ARP协议学习笔记
一、准备工作:1、本机环境:Windows XP SP3、电信ADSL 2M家庭宽带2、开发工具:WildPackets OmniPeek V5.1.4 Visual C++ 6.0 FlexEdit V2.3.1871 二、ARP协议概念:1、ARP的数据结构typedef struc原创 2009-09-12 09:34:00 · 1802 阅读 · 1 评论 -
HTTP协议学习笔记
一、准备工作:1、本机环境:Windows XP SP3、ADSL 10M光纤2、开发工具:WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1871 二、HTTP协议概述:原创 2009-09-11 10:06:00 · 4175 阅读 · 4 评论 -
POP3协议学习笔记
今日得闲,于是将POP3的学习笔记也整理出来!互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀... (还是那句,我比较喜欢用实践来证明一切,这样才会加深自己的理解!) 一、准备工作:1、本机环境:Windows XP SP3、公司ADSL 10M光纤2、开发工具:WildPac原创 2009-09-10 16:06:00 · 5512 阅读 · 3 评论 -
SMTP协议学习笔记
这几天敝人并没有及时更新博客,一是由于白天工作中的锁事比较繁杂,二来连续看了两个晚上的SMTP协议。 我比较喜欢用实践来证明一切,这样才会加深自己的理解! 一、准备工作:1、本机环境:Windows XP SP3、ADSL 10M光纤2、开发工具:WildPackets OmniPeek V5.1.4 Visual C++ 6.0原创 2009-09-10 10:47:00 · 14903 阅读 · 5 评论 -
IE各项注册表键值说明
一、工具→Internet选项[HKEY_CURRENT_USER/Software/Policies/Microsoft/Internet Explorer/Control Panel ]"GeneralTab"=dword:00000001 (隐藏"常规")"SecurityTab"=dword:00000001 (隐藏"安全" )"SecurityTab"=dword:00000原创 2009-08-27 11:19:00 · 10111 阅读 · 1 评论 -
FreeBSD使用手册(中文版)
目录序第一章 FreeBSD 简介第二章 安装 FreeBSD第三章 UNIX 系统入门第四章 使用者管理第五章 网络设定第六章 档案系统管理第七章 系统安全第八章 编译核心第九章 系统调校第十章 软件安装第十一章 X Window 的使用第十二章 NAT 及防火墙第十三章 网页服务器第十四章 网页服务器进阶应用第十五章 FTP原创 2009-09-25 15:41:00 · 1282 阅读 · 1 评论 -
原来是百度域名被劫持(与twitter被攻击时手法如出一辙)
原来是百度域名被劫持,杯具啊! twitter被黑事件:http://www.cnbeta.com/articles/100352.htm 以下转自:http://www.cnbeta.com/articles/101927.htm 今天早上7时许,百度出现访问中断的情况,查询域名baidu.com的WHOIS信息后发现百度域名出现不可理解的问题。目前问题并未解原创 2010-01-12 09:24:00 · 1549 阅读 · 3 评论 -
IP路由选择过程
如下图,现在这么一个网络。主机甲与主机乙分别在两个不同的网段上,中间通过路由器进行连接。现在假设主机甲要跟主机乙进行通信,那么主机甲如何才能够找到主机乙的位置呢? 假设现在主机甲的用户利用Ping命令,来确认主机乙的连通性问题。这个网络架构虽然比较简单,但是其路由选择过程的步骤则是一步不缺的。主要通过如下步骤: 第一步:当用户原创 2009-12-09 16:14:00 · 1460 阅读 · 1 评论 -
局域网实战分析 —— ARP风暴
如果一个局域网中某电脑猥琐的开着P2P终结者、网络执法官等ARP欺骗的工具,是十分恼火的!搞得整个局域网乌烟瘴气的,到处都是ARP请求,轻微的则直接影响网络延时、情节严重的可以盗取各类网游等账号。 经网络群的朋友推荐,我使用了国产的局域网抓包工具——科来网络分析系统.... 1、网络拓扑图如下:HUB是广播方式工作,如果一个端口接到信息,因为不是目的端口,所以将信息又向网络中原创 2009-11-27 17:55:00 · 12874 阅读 · 3 评论 -
双路由设置上网与共享
前两天将公司的华硕WL500gP V2无线路由器也接上去了,测试了一下又路由上网与共享文件: 1、公司当前网络拓扑图如下: 2、双路由后网络拓扑图如下: 3、上图中第一个路由器保持默认不变(如ISP提供的固定IP或PPPOE上网方式),无线路由器的设置方法如下:先设置无线路由器的内网IP地址为192.168.0.1(这个IP便是该网段计算机的网关地址)原创 2009-11-27 14:17:00 · 3172 阅读 · 2 评论 -
清除windows访问共享的用户名和密码
弱弱的说,有时候服务器需要更换账号,登录到文件服务器,所以得清除上次保存的用户与密码,以前都是用IE清楚所有缓存,幸运的是之前基本都用好,不好用就重启。这次google到了最简单的办法: 1、方法一: win + r -> control keymgr.dll 2、方法二: net use //SSC-FILE/ipc$ /delete原创 2009-10-08 08:29:00 · 10400 阅读 · 1 评论 -
ICMP数据包-实战分析
昨天有位学习网络编程的兄弟对于TCP/IP里一些协议与概念性的东西很模糊,想让我给他讲解一下ICMP。这不正有空,于是乎随手抓了个ICMP的包给他分析了一下: (前面这些概念性的东西,这是基础的,必看!) ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面。所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文(见图表,ICMP报文的结构和几种常见原创 2009-07-13 08:24:00 · 18814 阅读 · 2 评论