网络编程
文章平均质量分 54
lyz_cs
哈哈哈
展开
-
ping 原理与ICMP协议
ping 的原理 ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。 ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可转载 2016-10-20 00:57:21 · 667 阅读 · 0 评论 -
WSACreateEvent 事件使用
转载:http://www.cnblogs.com/venow/archive/2012/06/12.html事件选择模型 事件选择(WSAEventSelect)模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投递至一个事件对象句转载 2016-10-19 21:49:57 · 1785 阅读 · 0 评论 -
Windows 和 Linux 的IPC API对应表
原文出处:http://blog.csdn.net/zhengdy/article/details/5485472 Windows 和 Linux 的IPC API对应表 Table 1. Process mappingWindowsLinuxCl转载 2016-10-19 22:00:00 · 931 阅读 · 0 评论 -
Socket详解
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型转载 2016-09-03 10:32:28 · 53274 阅读 · 12 评论 -
Socket send函数和recv函数详解
1.send 函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接原创 2016-09-03 13:53:20 · 1134 阅读 · 4 评论 -
Linux errno 错误对照表
转自:http://blog.csdn.NET/gpengtao/article/details/7553307rrno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。strerror() 函数依据 errn转载 2016-11-01 19:50:17 · 1287 阅读 · 0 评论 -
阻塞状态的recv返回值
recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。 首先阻塞接收的recv有时候会返回0,这仅在对端已经关闭TCP连接时才会发生。 而当拔掉设备网线的时候,recv并不会发生变化,仍然阻塞,如果在这个拔网线阶段,socket被关掉了,后果可能转载 2016-11-01 20:05:18 · 1784 阅读 · 0 评论 -
Accept阻塞怎么办?,
Accept阻塞时,导致监听socket不能释放问题的解决方法: 采用Accept线程,专门开个线程去接收,在网络编程中,就是在receive端线程中开个accept线程去接收,可以解决阻塞问题,因为父线程结束了,子线程会被操作系统回收,不用我们做了,当然我们线程不能开太多,否则会出现malloc申请内存都出错。部分代码说明://采用accept线程 if (flag)原创 2016-11-19 19:20:06 · 6094 阅读 · 0 评论 -
两种socket获取本机IP地址方法及获取ip对应网卡
获取计算机的名称和IP地址可以通过调用winsock里面的函数完成,下面上是用到的函数:1.WSAStartup(),此函数在应用程序中初始化windows sockets DLL,这个函数调用成功后,才可以调用其他的api函数。2.WSACleanup()函数,应用程序会占用系统资源,这个函数用来解除与socket的绑定,并且释放占用的系统资源。3.gethostname() 用转载 2016-10-22 00:32:09 · 23013 阅读 · 0 评论 -
关于socket通信bind()返回值错误:10049
对于10049错误类型的解释为: 1 0 0 4 9 —W S A E A D D R N O TAVA I L不能分配请求的地址。A P I 调用中指定的地址对那个函数来说无效时,就会产生这样的错误。例如,若在b i n d 调用中指定一个I P 地址,但却没有对应的本地I P 接口,便会产生这样的错误。另外,通过c o n n e c t 、W S A C o原创 2016-12-20 12:42:44 · 19899 阅读 · 0 评论 -
Windows7旗舰版和10 创建原始套接字失败,代码10013
笔记本重装系统后,以前能运行的程序中的Ping程序不能运行了。查看代码,创建套接字失败。RawSock = socket ( AF_INET, SOCK_RAW, IPPROTO_ICMP ) ;RawSock==INVALID_SOCKET用DWORD dwError=WSAGetLastError();查看错误代码为10013.网上查了一下,说是权限被拒绝。以一转载 2016-10-19 14:31:46 · 5251 阅读 · 0 评论 -
c++实现ip是否在同一个网段的判断
废话不说直接贴代码:ip的数据结构typedef struct IP_Struct{ //ip地址划分后各个域的值 struct IpAdress_Struct { int first; int second; int third; int forth; }IpAdress,*pIPAdress; //ip地址 char szIPAdress[MAX原创 2016-12-21 01:02:36 · 6825 阅读 · 0 评论 -
Socket error 10060
Socket error 10060 - Connection timed out //超时错误原因可能是:要访问的网站有问题,关机了或者服务未启动等等;到网站的网络有问题,连接不上;防火墙阻挡了连接。 解决方法:先两台机子先互ping一下,看是否通,不通的话,我就重启了,呵呵!我这是一方将服务关掉了,有一台机子只能发原创 2016-09-06 14:36:52 · 22567 阅读 · 2 评论 -
VS2013下socket新函数代替旧函数引起的编译错误
error C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings1> c:\program files (x86)\windows kits\8.1\incl原创 2017-01-21 21:34:54 · 389 阅读 · 0 评论 -
WSAGetLastError() 返回的错误
下面列示了用户在 Windows 操作系统上使用 TCP/IP 时,可能最常遇到的错误代码。它不是完整的错误列表。可以在文件 winsock2.h 中找到 WSAGetLastError() 返回的错误。如果您未安装开发环境,则在您的系统上可能未安装此文件。在“Windows 套接字 2 应用程序编程接口”中说明了关于特定函数返回的错误的更多信息。可以从下列 Web 站点获取此规范的副本:http转载 2016-11-09 22:37:46 · 3732 阅读 · 0 评论 -
WSASocket()与Socket()的区别
WSASocket是Windows专用,支持异步操作;socket是unix标准,只能同步操作。Socket可采用多线程实现非阻塞*******原文:http://hi.baidu.com/%B9%A6%BB%D4cgh/blog/item/c610f713abbb0609b9127b99.html******/ winsock是socket的windows平台转载 2016-10-19 13:06:22 · 1678 阅读 · 0 评论 -
socket编程——sockaddr_in结构体操作
sockaddr结构体sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了struct sockaddr { unsigned short sa_family; char sa_data[14]; }; sa_family是通信类型,最常用的值是 "AF_INET"sa_原创 2016-09-02 19:26:39 · 3382 阅读 · 0 评论 -
SOCKET 常用函数的返回值分析
socket() accept()如果成功就返回生成的SOCKET,如果失败就返回INVALID_SOCKET.#define INVALID_SOCKET (SOCKET)(~0)实际上是 0xFFFFFFFF 4bytes bind() listen() connect()如果成功就返回0,如果失败就返回SOCKET_ERROR,转载 2016-09-03 13:11:02 · 8739 阅读 · 0 评论 -
Socket error 10053
socket error- Software caused connection abort. Error code : 10053Action.c(16): Error : socket0 - Software caused connection abort. Error code : 10053.10053这个错误,产生于socket通讯过程转载 2016-09-03 17:26:26 · 3345 阅读 · 0 评论 -
【windows socket+UDP服务器客户端】
Windows Socket+UDP服务器客户端 Winsock是 Windows下套接字标准。 1.UDP socket编程: UDP(用户数据报协议)是一个无连接,不可靠的数据传输,其特点是简单,快捷。相比与TCP,UDP不需要建立连接(不需connect、accept函数),数据转载 2016-09-03 20:28:54 · 1146 阅读 · 0 评论 -
sendto & recvfrom 详解
参考一:sendto和recvfrom一般用于UDP协议中,但是如果在TCP中connect函数调用后也可以用.sendto()和recvfrom()——利用数据报方式进行数据传输 1. 在无连接的数据报socket方式下,由于本地socket并没有与远端机器建立连接,所以在发送数据时应指明目的地址,sendto()函数原型为: int sendto(int转载 2016-09-03 23:23:19 · 3702 阅读 · 0 评论 -
linux下错误的捕获:errno和strerror的使用
经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。 在程序代码中包含 #include ,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量转载 2016-09-17 10:45:08 · 674 阅读 · 0 评论 -
拔掉网线时Socket的检查方法
拔掉网线时Socket的检查方法http://blog.csdn.net/fan_hai_ping/article/details/6699650最近在做有关于TCP采集程序时,发现在客户端与服务器通过TCP socket进行通信的时候,如果客户端应用程序正常或者异常退出时,服务器都可以在对应的socket通信连接上获得响应(如返回0,或者抛出异常)。但是,如果在客户端的网线被拔掉转载 2016-09-17 19:54:18 · 7961 阅读 · 0 评论 -
Socket编程中,阻塞与非阻塞的区别
阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到来.这个行为叫阻塞.accept()方法将会阻塞服务器线程直到一个呼叫到来.当5个连接处理完闭之后,服务器退出.任何的在队列中的呼叫将会被取消. 非阻塞:非阻塞套接字是指执行此套接字的网络调用时转载 2016-09-03 23:37:45 · 890 阅读 · 0 评论 -
IP地址和MAC地址的异同
IP地址和MAC地址相同点是它们都唯一,不同的特点主要有: 1. 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一原创 2016-10-21 23:59:52 · 2475 阅读 · 0 评论 -
Socket和网络编程(1)
客户/服务器模型套接字接口协议栈、协议族和地址族?TCP/IP协议是一个协议族, Windows上用C实现了TCP/IP协议,称为TCP/IP协议栈(Linux是开源的,可以看源代码哦, :-) ), IPv4 IP地址或者 IPv6 IP地址称为TCP/IP的地址族.原创 2016-06-02 22:22:16 · 426 阅读 · 0 评论 -
你看得懂的海明码校验和纠错原理
以下内容摘自笔者最新出版的著作《深入理解计算机网络》一书:http://item.jd.com/11165825.html 本书原始目录参见此文:http://blog.csdn.net/lycb_gz/article/details/8199839 5.3.6 海明纠错码 海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错转载 2016-09-28 22:24:01 · 13294 阅读 · 3 评论 -
客户端 用不用 bind 的区别
无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。 Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024转载 2016-10-22 00:11:41 · 438 阅读 · 0 评论 -
TCP Socket文件传输的粘包问题及解决
基于TCP网络传输的应用程序有时会出现粘包现象(即发送方发送的若干包数据到接收方接收时粘成一包)TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。 出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多转载 2016-10-16 17:08:43 · 1558 阅读 · 0 评论 -
socket绑定的ip为INADDR_ANY 的意义
socket INADDR_ANY 监听0.0.0.0地址 socket只绑定端口让路由表决定传到哪个ip其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。一般情况下,如果你要建立网络服务器,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发转载 2016-10-26 11:39:02 · 34094 阅读 · 2 评论 -
epoll基本原理及使用框架
转载自: https://www.cnblogs.com/panfeng412/articles/2229095.htmlepoll是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它不会复用文件描述符集合来传递结果而迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件...转载 2018-08-30 11:04:45 · 839 阅读 · 0 评论