自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(176)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于LSP劫持SOCKS5认证

基于LSP劫持SOCKS5认证实现客户端以代理方式连接远程服务器1 Winsock2 SPIwinsock2服务提供者接口(service provider interface)是Winsock API的补充。服务提供者接口,是应用程序使用的服务,而它本身不是应用程序,他的作用是向加载这个服务的应用导出自己。原本Winsock目录如下:Winsock 32-bit Catalog:1001 - Hyper-V RAW1006 - AF_UNIX1007 - MSAFD Tcpip [TCP/I

2021-01-22 14:06:46 1380 4

原创 WSPIoctl 英文版

WSPIoctl11/18/201513 minutes to readA version of this page is also available forWindows Embedded CE 6.0 R34/8/2010This function controls the mode of a socket.SyntaxCopyint WSPIoctl(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBu

2021-01-18 15:57:05 311

原创 ConnectEx

ConnectEx是一个极其必要的API,这个函数允许重叠的连续调用。BOOL PASCAL ConnectEx(__in SOCKET s,__in const struct sockaddr* name,__in int namelen,__in_opt PVOID lpSendBuffer,__in DWORD dwSendDataLength,__out LPDWORD lpdwBytes

2021-01-14 15:46:12 978

原创 bind()

将一本地地址与一套接口捆绑。本函数适用于未连接的数据报或流类套接口,在connect()或listen()调用前使用。当用socket()创建套接口后,它便存在于一个名字空间(地址族)中,但并未赋名。bind()函数通过给一个未命名套接口分配一个本地名字来为套接口建立本地捆绑(主机地址/端口号)。如无错误发生,则bind()返回0。否则的话,将返回-1,应用程序可通过WSAGetLastError()获取相应错误代码。...

2021-01-12 16:31:28 342

原创 select函数的作用

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数

2020-12-14 14:55:09 270

原创 VS无法打开源文件及无法打开链接库文件的解决方法

一、无法打开源文件依次点击“项目——配置属性——C/C++——常规”,在“附加包含目录”中加入.h文件所在的文件夹路径二、无法打开文件“XXX.lib”1、依次点击“项目——配置属性——链接器——常规”,在“附加库目录”中加入.lib所在的文件夹的路径在这里插入图片描述2、方法①:在“链接器”中找到“输入”,在“附加依赖项”中加入需要加入的xxx.lib;(要用;和其他链接库分隔开)方法②:也可以用代码的方式链接进来#pragma comment(lib,“2.lib”)...

2020-12-08 16:21:14 10584

原创 Writing a Winsock 2 Layered Service Provider

https://blog.csdn.net/lipei1220/article/details/6528183 解读https://www.docin.com/p-640542992.html ---------PPT

2020-12-08 15:18:00 103

原创 GetLastError返回值的意义----适用在eVC和VC++

https://blog.csdn.net/KevinCEC/article/details/652252?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control〖0〗-操作成功完成。〖1〗-功能错误。〖2

2020-12-04 16:52:41 384

原创 WSAGetLastError()=183

调用了出错的那个socket函数以后(返回-1的那个函数),必须立刻调用WSAGetLastError,中间不能调用其他函数或者其他操作,否则返回的错误码是不准确的。出现183,可能是调用WSAGetLastError之前还做了其他操作...

2020-12-04 16:39:54 369

原创 Socket的阻塞模式和非阻塞模式

https://www.cnblogs.com/welen/articles/5039727.html Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待时间。图所示,在调用recv()函数时,发生在内核中等待

2020-11-30 16:43:53 1781

原创 Socket的消息阻塞和非阻塞send/recv

原文:https://blog.csdn.net/shy_hc/article/details/69950334先理一下阻塞和非阻塞的概念:阻塞就是让当前调用线程一直处于停止等待当中,挂起的状态,线程函数会被卡住。非阻塞则是不管运行结果如何,都会继续往下执行(往往都要处理很多返回结果),线程函数里一般都是一个循环,不停的轮询。再理一下发送接收函数:send/sendto函数,只是把应用层的数据拷贝到内核发送缓冲区,并不保证数据一定会被发送到对端,真正执行发送及什么时候发送是由系统(协议栈)决定的,

2020-11-30 16:32:22 2557

原创 recv

intrecv(SOCKETs, charFAR*buf, intlen, intflags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,(1)recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据

2020-11-20 16:28:30 368

原创 输出debug文件打印日志

static int WriteFileAppend(const CHAR* fileName, const CHAR * res, DWORD size){ FILE *fp; if (fopen_s(&fp, fileName, "ab+") != 0) { return 0; } fwrite(res, sizeof(CHAR), size, fp); fwrite("\r\n", sizeof(CHAR), strlen("\r\n"), fp); fclose(fp);

2020-11-19 15:15:28 1027

原创 SMTP和Telnet和http和https

SMTPSMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。 [1]SMTP协议的工作过程可分为如下3个过程: [4](1)建立连接:在这一阶段,SMTP

2020-11-17 11:00:10 1493

原创 FTP服务器

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。 [1]ASCⅢ传输模式假定正在传输的文件包含简单的ASCI码文本,当文件传输时FTP通常会自动地调整文件的内容,以便将文件存储为另外一台计算机上的ASCI码文本文件。 [5]二进制传输模式在二进制

2020-11-17 10:40:23 111

原创 tolower

tolower是一种函数,功能是把字母字符转换成小写,非字母字符不做出处理。和函数int _tolower( int c )功能一样,但是_tolower在VC6.0中头文件要用ctype.h。#include<string.h>#include<stdio.h>#include<ctype.h>#include<stdlib.h>int main(){ int i; char string[] = "THIS IS A STRIN

2020-11-16 15:33:45 112

原创 centos7防火墙状态命令

看centos7的防火墙的状态,查看的命令为sudo systemctl status firewalld。查看后,看到active(running)就意味着防火墙打开了。如果想关闭防火墙,命令为:sudo systemctl stop firewalld。打开防火墙的命令为:sudo systemctl start firewalld。...

2020-11-13 14:37:17 274

原创 linux重启和关闭系统命令

重启命令:1、reboot2、shutdown -r now 立刻重启(root用户使用)3、shutdown -r 10 过10分钟自动重启(root用户使用)4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)关机命令:1、halt 立刻关机2、poweroff 立刻关机3、shutdown -h now 立刻关机(root用户使用)4、shutdown -h 10 10分钟后自动关机...

2020-11-13 13:42:43 445

原创 Linux-CentOS7 配置搭建SOCKS5代理服务

Linux-CentOS7 配置搭建SOCKS5代理服务https://www.pianshen.com/article/3801266308/

2020-11-12 18:34:44 1794

原创 LSP分两种:一种是IFS LSP,一种是non IFS LSP.

LSP分两种:一种是IFS LSP,一种是non IFS LSP.简单地说, IFS LSP制作简单,可以完成大部分的数据包监听工作; non IFS LSP制作复杂,但是可以进行一些特殊的overlapped I/O操作,如在overlapped初始化完成后,调用WSPSend (WriteFile), WSPSendTo, WSPRecv (ReadFile), WSPRecvFrom, or WSPIoctl之前,对数据进行一些处理工作.LSP相互之间可以叠加,但在non IFS LSP之上不可以叠

2020-11-12 10:44:42 706

原创 assert

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参

2020-11-11 12:00:12 120

原创 ioctlsocket()

ioctlsocket()ioctlsocket()是一个计算机函数,功能是控制套接口的模式。可用于任一状态的任一套接口。它用于获取与套接口相关的操作参数,而与具体协议或通讯子系统无关。FIONBIO:允许或禁止套接口s的非阻塞模式。argp指向一个无符号长整型,如允许非阻塞模式则非零,如禁止非阻塞模式则为零。当创建一个套接口时,它就处于阻塞模式(也就是说非阻塞模式被禁止)。这与BSD套接口是一致的。WSAAsyncSelect()函数将套接口自动设置为非阻塞模式。如果已对一个套接口进行了WSAAsyn

2020-11-10 15:23:58 745

原创 strstr()

char *strstr(const char *haystack, const char *needle)在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。参数haystack – 要被检索的 C 字符串。needle – 在 haystack 字符串内要搜索的小字符串。返回值该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。#include <stdio.h>#include

2020-11-05 11:59:17 275

原创 sprintf

#include <stdio.h>int main( void ){char buffer[200], s[] = “computer”, c = ‘l’;int i = 35, j;float fp = 1.7320534f;// 格式化并打印各种数据到bufferj = sprintf( buffer, " String: %s\n", s ); // C4996j += sprintf( buffer + j, " Character: %c\

2020-11-05 11:56:49 118

原创 VS更新后报错 error MSB8036: 找不到 Windows SDK 版本10

VS更新后报错如下:Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。解决方法:项目右键-》属性-》常规-》Windows SDK 版本下拉选择合适的版本,确定后就可以解决这个错误。...

2020-11-04 16:52:51 2006

原创 网络封包过滤之分层服务提供者(LSP)

https://blog.csdn.net/chinafe/article/details/7782635分层服务提供者(LSP)(1)开发过滤数据包的LSP程序可以定义过滤规则,恩,先看看LSP本身是DLL,可以将它安装至Winsock目录,创建套接字的应用程序不必知道此LSP的任何信息就能调用它运行原理用户创建套接字套接字创建函数(如socket)在Winsock目录寻找合适的协议此协议的提供者导出的函数完成各种功能我们的目的:将自己编写的提供者安装到Winsock目录中,让

2020-11-04 14:02:00 886

原创 C4996:#(“The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:“)

https://blog.csdn.net/heimabuhei/article/details/79976270在使用visual studio 2017 写程序时 ,出现了(“The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:”) 的报错打开你创建的项目 菜单栏下“项目”...

2020-11-03 17:03:23 336

原创 2020-11-03

memcmp函数的原型为 int memcmp(const void *str1, const void *str2, size_t n));其功能是把存储区 str1 和存储区 str2 的前 n 个字节进行比较。该函数是按字节比较的,位于string.h。 [1]int memcmp(const void *str1, const void *str2, size_t n));参数str1-- 指向内存块的指针。str2-- 指向内存块的指针。n-- 要被比较的字节数。功能比较内存区域bu

2020-11-03 17:02:13 51

原创 Python with as用法详解

任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会程序的运行造成意想不到的隐患。但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛出了异常,还是无法及时关闭文件。为了更好地避免此类问题,不同的编程语言都引入了不同的机制。在 Python 中

2020-11-02 11:01:49 1036 1

原创 Flask入门系列(一)–Hello World

网站:http://www.bjhee.com/flask-1.htmlHello World程序员的经典学习方法,从Hello World开始。不要忘了,先安装python, pip,然后运行pip install Flask,环境就装好了。当然本人还是强烈建议使用virtualenv来安装环境。细节就不多说了,让我们写个Hello World吧:from flask import Flaskapp = Flask(name)@app.route(’/’)def index():return

2020-10-30 15:10:14 177

原创 关于WSPConnect的重定向

int WSPAPI WSPConnect( SOCKET s, const struct sockaddr FAR * name, int namelen, LPWSABUF lpCallerData, LPWSABUF lpCalleeData, LPQOS lpSQOS, LPQOS lpGQOS, LPINT lpErrno ){ //代理服务器地址//填写地址结构体信息,SOCKADDR_IN transferSrv;

2020-10-27 10:41:13 749

原创 socket开发中INADDR_ANY“的含义是什么?

"将sin_addr设置为INADDR_ANY"的含义是什么?INADDR_ANY转换过来就是0.0.0.0,泛指本机的意思,也就是表示本机的所有IP,因为有些机子不止一块网卡,多网卡的情况下,这个就表示所有网卡ip地址的意思。比如一台电脑有3块网卡,分别连接三个网络,那么这台电脑就有3个ip地址了,如果某个应用程序需要监听某个端口,那他要监听哪个网卡地址的端口呢?如果绑定某个具体的ip地址,你只能监听你所设置的ip地址所在的网卡的端口,其它两块网卡无法监听端口,如果我需要三个网卡都监听,那就需要绑

2020-10-26 10:41:50 196

原创 inet_ntop 头文件

inet_pton是一个IP地址转换函数,可以在将点分文本的IP地址转换为二进制网络字节序”的IP地址,而且inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。外文名inet_pton属 于IP地址转换函数转 换将点分文本IP转换为二进制网络字节序IP可 以能够处理ipv4和ipv6头文件:windows下:#include <WS2tcpip.h>linux下:#include <sys/socket.h>

2020-10-26 10:09:14 9589

原创 inet_pton()和inet_ntop()函数详解

https://blog.csdn.net/zyy617532750/article/details/58595700/1.把ip地址转化为用于网络传输的二进制数值int inet_aton(const char *cp, struct in_addr *inp);inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中,即第二个参数*inp,函数返回非0表示cp主机有地有效,返回0表示主机地址无效。(这个转换完后不能用于网络传

2020-10-26 10:02:46 745

原创 cp: 无法创建普通文件“/usr/sbin/ss5“: 文本文件忙

不能创建目录的原因很多bai。有如下几条:这个文件被ss5启动使用者 所以无法创建成功,关闭ss5就可以啦第一,磁盘du空间不足zhi建议你检查一下磁盘空间。第二,已经dao存在该目录,并正在被某些程序使用。这时候建议你用杀毒软件检查一下是否还存在病毒。也可以尝试在安全模式下将c:\DOCUME1\yy97cc1.LEI\LOCALS~1\TEMP目录下的文件清空。第三,对磁盘进行一下检查看看是否存在错误,如果存在请进行一下修复。第四,你的安装程序存在病毒,并被你的杀毒软件阻止。要想继续安装请关闭

2020-10-23 10:20:54 5195

原创 gcc安装

gcc安装https://www.linuxprobe.com/linux-gcc-shell.html基本上很多应用在编译安装时需要使用到gcc,一般使用的版本不是很高所以通过快捷安装命令即可:yum install -y gcc-c++但有的应用编译时需要更高版本的gcc,这个时候基本上只能通过编译安装,而gcc编译安装非常麻烦,需要几个指定版本的依赖组件才能编译安装成功,为方便安装特意编写了一个安装shell脚本,通过脚本来无人安装,当然安装编译过程还是有点长的,脚本暂只支持以CentOS系统(

2020-10-22 14:33:28 197

原创 linux复制文件

1.cp命令命令:cp dir1/a.doc dir2 表示将dir1下的a.doc文件复制到dir2目录下cp -r dir1 dir2 表示将dir1及其dir1下所包含的文件复制到dir2下cp -r dir1/. dir2 表示将dir1下的文件复制到dir2,不包括dir1目录说明:cp参数 -i:询问,如果目标文件已经存在,则会询问是否覆盖;文件移动(mv)文件移动不同于文件拷贝,文件移动相当于我们word中的术语剪切和粘贴。命令:mv AAA BBB 表示将AAA改名成BBB压

2020-10-22 14:28:51 2169

原创 Vi下如何保存退出

初学Linux的时候,在使用vi 操作时候,有时候可能进入的是一个文件夹,这样子在退出的时候很不好操作!下面总结一些vi 退出命令,学习!进入编辑模式,按 o 进行编辑编辑结束,按ESC 键 跳到命令模式,然后输入退出命令::w保存文件但不退出vi 编辑:w! 强制保存,不退出vi 编辑:w file将修改另存到file中,不退出vi 编辑:wq保存文件并退出vi 编辑:wq!强制保存文件并退出vi 编辑q:不保存文件并退出vi 编辑:q!不保存文件并强制退出vi 编辑:e!放弃所有修

2020-10-22 11:46:02 3012

原创 解决CentOS下联网 ping通ip ping通域名

1、先设置 网络适配器 为NAT模式右击虚拟机 如图 然后修改网络连接为NAT模式2、查看可设置的 IP 地址范围 、子网掩码、网关在VMware软件中,在弹出的列表中选择VMnet8之后在 点击NAT设置 可知 子网掩码:255.255.255.0 网关:192.168.78.2再点击DHCP设置 可知其实IP地址 和结束IP地址 IP地址:192.168.78.128~254都可以3、在看windows服务是否启动。控制面板-&g

2020-10-22 11:22:25 409

原创 python的下载和安装步骤

python的下载和安装步骤https://www.cnblogs.com/wyqzh/p/11791388.html安装python分三个步骤:*下载python*安装python*检查是否安装成功1、下载Python(1)python下载地址https://www.python.org/downloads/(2)选择下载的版本(3)点开Download后,找到下载文件Gzipped source tarball 是Linux系统下载的版本XZ compressed source ta

2020-10-21 23:02:25 380

java后端开发学习路线.xmind

java后端开发学习路线 ,详细的知识框架和技术栈;java后端开发学习路线 ,详细的知识框架和技术栈

2020-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除