随笔分类 - 网络编程
Windows netstat 查看端口、进程占用
摘要:目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用.操作:操作分为两步:(1)查看该端口被那个PID所占用;方法一:有针对性的查看端口,使用命令Netstat –ano|findstr “”,如图,最后一列为PID。图中的端口号为1068,所对应的PID为3840。方法二:查看所有的,然后找到对应的端口和PID。第一幅图中的5列就是上面(a)图对应的5列(2)查看该PID对应的进程名称。方法一:一直用命令查找,tasklist|findstr “”从(c)图可以看出,PID为3840所对应的进程名字为msnmsgr.exe。方法二:用任务管理器查看。调出
阅读全文
Windows xp/2003 中安装虚拟网卡 Microsoft Loopback Adapter
摘要:方法 1 (命令行下安装)devcon.exe install %windir%\inf\netloop.inf *msloop类似于以下输出表示安装成功:Device node created. Install is complete when drivers are updated...Updating drivers for *msloop from C:\WINDOWS\inf\netloop.inf.Drivers updated successfully.注:卸载devcon.exe remove %windir%\inf\netloop.inf *msloop方法 2 (通过使用
阅读全文
TCP/IP中32位IP地址与字符串转化(转)
摘要:在网络上面我们用的IP都是数字加点(192.168.0.1)构成的,而在structin_addr结构中用的是32位的IP,我们上面那个32位IP(C0A80001)是的192.168.0.1为了转换我们可以使用下面两个函数 intinet_aton(constchar*cp,structin_addr*inp) char*inet_ntoa(structin_addrin) 函数里面a代表asciin代表network.第一个函数表示将a.b.c.d的IP转换为32位的IP,存储在inp指针里面.第二个是将32位IP转换为a.b.c.d的格式. 同样inet_addr也可以进行字符串到32位
阅读全文
TCP/IP 某些最常见的错误原因码 (errno)列表(转)
摘要:对于在基于 UNIX 的环境中的 TCP/IP 用户,下表列出了某些最常见的错误原因码 (errno)。它不是完整的错误列表。可以在文件 /usr/include/sys/errno.h 中找到 Errno。针对每一种操作系统给出了errno 号码。基于 UNIX 的 TCP/IP errnoErrnoErrno号码AIXHP-UXSolarisUnixWareLinux说明EINTR44444系统调用中断。EAGAIN1111111111资源临时不可用。EBUSY1616161616资源正忙。EMFILE2424242424每个进程文件描述符表已满。EPIPE3232323232管道断开。E
阅读全文
WinPcap过滤串表达式的语法
摘要:注意:这篇文档取自tcpdump的指南。原始的版本www.tcpdump.org找到。wpcap的过滤器是以已声明的谓词语法为基础的。过滤器是一个ASCII字符串,它包含了一个过滤表达式。pcap_compile()把这个表达式编译成内核级的包过滤器。这个表达式会选择那些数据包将会被堆存。如果表达式没有给出,那么,网络上所有的包都会被内核过滤引擎所认可。不然,只有那些表达式为'true'的包才会被认可。这个表达式包含了一个或多个原语。原语通常包含了id(名字或序列),这些id优先于限定词。以下是三种不同的限定词:输入(type)指明了哪些东西是id所代表的。可能的输入是host
阅读全文
关于UDP 数据包长度的选择
摘要:在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助: 首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层. UDP属于运输层,下面我们由下至上一步一步来看: 以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的. 这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这这
阅读全文
TCP_NODELAY和TCP_CORK
摘要:先上代码: int flag = 1; int result = setsockopt(sock, /* socket affected */ IPPROTO_TCP, /* set option at TCP level */ TCP_NODELAY, /* name of option */ (char *) &flag,/* the cast is historical cruft */ sizeof(int)); /* length of option v...
阅读全文
[精华] 讨论 Setsockopt选项
摘要:有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.以下资料均从网上收集得到getsockopt 和 setsockopt获得套接口选项: int getsockopt ( int sockfd, int level, int optname, void * optval, socklen_t *opteln ) 设置套接口选项: int setsockopt ( int sockfd, int level, int optname, const void * optval, socklen_t *opteln ) sockfd(套接字): 指向一个打开的套
阅读全文
linux setsockopt
摘要:1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FALSE;setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLing
阅读全文
Linux下getsockopt/setsockopt 函数说明
摘要:【getsockopt/setsockopt系统调用】功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include <sys/types.h>#include <sys/socket.h>intgetsockopt(int sock, int level, int
阅读全文
TCP/IP编程中协议无关性的函数getaddrinfo()
摘要:一、getaddrinfo函数介绍:gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个sockaddr结构的链表而不是一个地址清单。这些sockaddr结构随后可由套接口函数直接使用。如此以来,getaddrinfo函数把协议相关性安全隐藏在这个库函数内部。应用程序只要处理由getaddrinfo函数填写的套接口地址结构。该函数在POSIX规范中定义了。#include<netdb.h>int getaddrinfo( const char *hostname, con
阅读全文
浙公网安备 33010602011771号