
Socket网络通信
文章平均质量分 89
danis
二十年资深老程序员。
展开
-
阿超开发底层WINSOCK API:select的问题
fd_set fdread; FD_ZERO(&fdread); FD_SET(pUDPServer->m_socketListen.m_socket, &fdread); int maxSize = pUDPServer->m_socketListen.m_socket; maxSize++; 包的结构体 包的结构体对象; if (select(max原创 2007-01-13 20:51:00 · 1143 阅读 · 0 评论 -
ICMP是“Internet Control Message Protocol”
[2006-12-28 20:13:23] 从58.60.13.168接收ICMP数据包, 对应的本机地址为222.80.188.213 [2006-12-28 20:15:47] 从58.60.13.168接收ICMP数据包, 对应的本机地址为222.80.188.213 [2006-12-28 20:15:48] 从58.60.13.168接收ICMP数据包, 对应的本机地址为222.80.1原创 2007-07-05 17:12:00 · 904 阅读 · 0 评论 -
TTL(生存时间)
根据ping一个ip地址返回的ttl值可以判断对方的系统 TTL=32 Windows 9x/Me TTL=64 LINUX TTL=128 Windows 200x/XP TTL=255 Unix TTL(生存时间) TTL是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一原创 2007-07-05 18:05:00 · 1214 阅读 · 0 评论 -
什么是时间戳
时间戳不是什么玄乎的东西,就是文件属性里的创建、修改、访问时间。 数字时间戳技术就是数字签名技术一种变种的应用。在电子商务交易文件中,时间是十分重要的信息。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容。数字时间戳服务(DTS:digita1 time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保原创 2007-07-05 17:05:00 · 1788 阅读 · 0 评论 -
IP头和TCP头数据结构(C#版)
IP头和TCP头数据结构(C#版) public struct ip_hdr //IP头 { public byte h_lenver; //4位首部长度+4位IP版本号 public byte tos; //8位服务类型TOS public ushort total_len; //16位总长度(字原创 2007-06-28 19:48:00 · 1181 阅读 · 0 评论 -
开始彻底的学习Winsock2
以前用VB6的Winsock控件用惯了,总以为开发网络应用是那么简单的事情,而且多线程也只不过是load多几个控件而已,看似简单。其实这只能做一点小小的玩具级应用。如果要做高性能的服务器端,终极宝典还是重叠IO完成端口这些玩意儿。本学期工程实践项目初定为一个类似Kugoo的P2P工具用于校内资源交换。顺水推舟找个机会强迫自己学一下学做高性能的服务器端。再说要是游戏继续做下去,服务器端还是会用到原创 2007-01-29 00:11:00 · 843 阅读 · 0 评论 -
完成端口的深入理解及一种变态用法
作为WIN平台下同时管理数千个连接的最为高效的网络模型,完成端口已经被越来越多的人认识和熟悉。通常情况下,一种经典的完成端口使用模式是: (1)创建完成端口,并在指定端口开始监听; (2)创建接受连接线程,用accept或acceptEx接受客户端连接; (3)创建工作者线程,处理客户端的数据收发。 众所周知,CreateIoCompletionPort函数,有两个作用,一是“创建”原创 2007-01-26 23:15:00 · 852 阅读 · 0 评论 -
一个小型的http代理程序
http代理程序网上有很多,公布源代码的也有一些,但是很多我测试的都不是很满意, 于是就借鉴了那些代码,我自己动手打造了这个。 没有很多注释,其实每个函数名都可以顾名思义。 我自己测试没什么问题的,有心的可以帮忙测试下,附件中有源码和已编译压缩的程序 其实协议的很多细节我没去弄清楚,只是知道修改下请求包再转发包,就写了这个东西 glacier前辈有空可以看下吗,http代理这样实现还有什么不足 /原创 2007-01-20 11:11:00 · 1755 阅读 · 0 评论 -
与socket有关的一些函数介绍
1、读取当前错误值:每次发生错误时,如果要对具体问题进行处理,那么就应该调用这个函数取得错误代码。 int WSAGetLastError(void ); #define h_errno WSAGetLastError()错误值请自己阅读Winsock2.h。2、将主机的unsigned long值转换为网络字节顺序(32位):为什么要这样做呢?因为不同的原创 2007-03-03 19:00:00 · 829 阅读 · 0 评论 -
阿超原创记载(实现有连接的TCP协议通信)
对于有连接的通信,无论是数据的发送,还是数据的接收,其数据的传送顺序都是有保证的,WinSock提供了对TCP(传输控制协议)的支持,通过TCP协议接收端可以与指定IP地址的主机进行连接,同时可以利用建立的连接双向地交换数据。在使用CSocket实现有连接的通信时,必须有一方扮演服务器的角色等待另一方的连接请求,所以服务器需要建立一个监听Socket,然后在此Socket上等待连接,当连接建立原创 2007-01-14 16:46:00 · 1087 阅读 · 0 评论 -
使用完成端口的单台服务器最多可连接2500个客户端
最近在做一个完成端口的项目,希望测试一下在普通Win2k Pro下最多可容纳的客户端。众所诸知,当客户connect到server,CreateIoCompletionPort后调用WSARecv等待客户端主动主报的数据。下面就是测试程序,单个客户端程序连接后,不停的调用wsarecv,观察非页面缓冲池的大小,发现到非页面缓冲池为800多K,而循环次数为2500的时候,程序崩溃。wsarecv调用原创 2007-03-04 17:00:00 · 2163 阅读 · 1 评论 -
Danis_自学WinSocket I/O方法
1.首先你需要知道什么是"Socket Modes",什么是"Socket I/O Models"?Socket Modes : Determines how winsock functions behave when called with a socket.Socket I/O Models : Describes how an application manages and processe原创 2007-03-04 16:47:00 · 836 阅读 · 0 评论 -
用C#实现基于TCP协议的网络通讯
TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。 要进行基于TCP协议的原创 2007-08-22 12:29:00 · 1186 阅读 · 1 评论