Location:
Search - winsock w
Search list
Description: 该程序在 Windows 2000 Pro+SP4 下编译调试通过(Visual C++ 6.0 IDE环境)。
需要Winsock2支持。
1.该程序采用了winsock的原始套接字编程,实现了基本的Ping功能,使用方法:ping host,默认连续发送4个回显请求。
2.该程序中对ICMP首部的定义采用了非标准形式。即将选项数据中保存时间戳的头4个字节也定义为ICMP首部的一部分,这样ICMP首部就被定义为12个字节。这样主要做主要是为了编程的实现与理解上的方便。
3.根据习惯ICMP首部的标示符字段填充了进程ID。
4.该程序实现了在IP首部记录路由的RR功能,最多记录9个地址。
要实现的功能参数:
1.n 参数 设定发送回显请求的数量
2.l 参数 设定选项数据的填充字节数
3.t 参数 持续的发送回显请求,直到用户按下Control-C停止
4 w 参数 设定接收超时的时间,以毫秒为单位
参数的具体说明可以参考windows自带的ping程序-the program in Windows 2000 SP4 Pro compiler under through debugging (Visual C 6.0 IDE environment). Winsock2 need support. 1. The procedure adopted protocols of the original socket programming, the basic implementation of Ping function, Use : ping host, the default four consecutive send the request back significantly. 2. The procedure for the first ICMP using the definition of non-standard forms. Upcoming options to preserve the timestamp data for the first four bytes are defined as ICMP first part, the first such ICMP was defined as 12 bytes. This is done primarily to the realization of programming and understanding for it. 3. Under customary ICMP first marker Address field filled with the process ID. 4. The program achieved in the first record of IP routing RR functions, the most record
Platform: |
Size: 14481 |
Author: 赵锐 |
Hits:
Description: See Appendix B for a description of the programs included
on this companion disk. RESOURCE.WRI identifies other books
and resources for Internet programming. WEBHELP.HLP contains
an introduction to the World Wide Web. TCPMAN.HLP provides
detailed instructions to help you use the Trumpet Winsock
included on this disk. Use the Program Manager s File menu
Run option to execute the SETUP.EXE program found on this
disk. SETUP.EXE will install the programs on your hard drive
and create an Internet Programming group window.
Internet编程技术 [配套程序]
[涉及平台] VC
[作者] void
[文件大小] 1032K -See Appendix B for a description of the prog rams included on this companion disk. RESOURCE . WRI identifies books and other resources for I '96 programming. WEBHELP.HLP contains an introduction to the World Wide Web. TCPMAN.HLP provides detailed instructions to help you use the Trumpet Winsock included on this disk. Use t he Program Manager Run s File menu option to exec pop the SETUP.EXE program found on this disk. SE TUP.EXE will install the programs on your hard d RCD and create an Internet Programming group w INDOW. Internet programming techniques [supporting] [procedures involving platform] VC [Author] void [Size] 1032K
Platform: |
Size: 980364 |
Author: 罗宝生 |
Hits:
Description: 一个判断远程主机存活程序代码(ping)
#include
#include
#include
#include
#include "winsock.h"
#pragma comment(lib,"Ws2_32");
#define SEND_SIZE 32
#define PACKET_SIZE 4096
#define ICMP_ECHO 8
#define ICMP_ECHOREPLY 0
struct icmp
{
unsigned char icmp_type;
unsigned char icmp_code;
unsigned short icmp_cksum;
unsigned short icmp_id;
unsigned short icmp_seq;
unsigned long icmp_data;
};
struct ip
{
unsigned char ip_hl:4;
unsigned char ip_v:4;
unsigned char ip_tos;
unsigned short ip_len;
unsigned short ip_id;
unsigned short ip_off;
unsigned char ip_ttl;
unsigned char ip_p;
unsigned short ip_sum;
unsigned long ip_src;
unsigned long ip_dst;
};
unsigned char sendpacket[PACKET_SIZE];
unsigned char recvpacket[PACKET_SIZE];
struct sockaddr_in dest_addr;
struct sockaddr_in from_addr;
int sockfd;
int pid;
unsigned short cal_chksum(unsigned short *addr,int len);
int pack(int pack_no);
int unpack(unsigned char *buf,int len);
void send_packet(void);
void recv_packet(void);
void main(int argc,char *argv[])
{
struct hostent *host;
struct protoent *protocol;
WSADATA wsaData;
int timeout=1000;
int SEND_COUNT=4;
int i;
char *par_host;
par_host=argv[argc-1]; //IP赋值
switch(argc)
{
case 2: break;
case 3: if(strcmp(argv[1],"-t")==0)
{
SEND_COUNT=10000;
break;
}
//fall through
default:
printf("usage: %s [-t] Host name or IP address\n",argv[0]);
exit(1);
}
if(WSAStartup(0x1010,&wsaData)!=0)
{
printf("wsastartup error\n");
exit(1);
}
if( (protocol=getprotobyname("icmp") )==NULL)
{
printf("getprotobyname error\n");
exit(1);
}
/*
printf("%s\n",protocol->p_name);
printf("%s\n",protocol->p_aliases);
printf("%d\n",protocol->p_proto);
system("pause");
*/
if( (sockfd=socket(AF_INET,SOCK_RAW,protocol->p_proto) )<0)
{
printf("socket error\n");
exit(1);
}
if(setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout))h_length);
//resolve address to hostname
if(host=gethostbyaddr(host->h_addr,4,PF_INET))
par_host=host->h_name;
//
//printf("%s\n",par_host);
//
}
else if( dest_addr.sin_addr.s_addr=inet_addr(par_host)==INADDR_NONE)
{
printf("Unkown host %s\n",par_host);
exit(1);
}
pid=getpid();
/*
printf("%d\n",pid);
system("pause");
*/
printf("Pinging %s [%s]: with %d bytes of data:\n\n",par_host,inet_ntoa(dest_addr.sin_addr),SEND_SIZE);
for(i=0;i1)
{ sum+=*w++;
nleft-=2;
}
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
}
sum=(sum>>16)+(sum&0xffff);
sum+=(sum>>16);
answer=~sum;
return answer;
}
//打包
int pack(int pack_no)
{
int packsize;
struct icmp *icmp;
packsize=8+SEND_SIZE;
icmp=(struct icmp*)sendpacket;
icmp->icmp_type=ICMP_ECHO;
icmp->icmp_code=0;
icmp->icmp_cksum=0;
icmp->icmp_seq=pack_no;
icmp->icmp_id=pid;
icmp->icmp_data=GetTickCount();
icmp->icmp_cksum=cal_chksum( (unsigned short *)icmp,packsize); /*校验算法*/
return packsize;
}
//解包
int unpack(unsigned char *buf,int len)
{
struct ip *ip;
struct icmp *icmp;
double rtt;
int iphdrlen;
ip=(struct ip *)buf;
iphdrlen=ip->ip_hl*4;
icmp=(struct icmp *)(buf+iphdrlen);
if( (icmp->icmp_type==ICMP_ECHOREPLY) && (icmp->icmp_id==pid) )
{
len=len-iphdrlen-8;
rtt=GetTickCount()-icmp->icmp_data;
printf("Reply from %s: bytes=%d time=%.0fms TTL=%d icmp_seq=%u\n",
inet_ntoa(from_addr.sin_addr),
len,
rtt,
ip->ip_ttl,
icmp->icmp_seq);
return 1;
}
return 0;
}
//发送
void send_packet()
{
int packetsize;
static int pack_no=0;
packetsize=pack(pack_no++);
if( sendto(sockfd,(char *)sendpacket,packetsize,0,(struct sockaddr *)&dest_addr,sizeof(dest_addr) )=0)
success=unpack(recvpacket,n);
else if (WSAGetLastError() == WSAETIMEDOUT)
{
printf("Request timed out.\n");
return;
}
}while(!success);
}
UID5380 帖子239 精华0 积分1289 阅读权限40 来自软件学院 在线时间81 小时 注册时间2006-5-22 最后登录2007-2-24 查看详细资料
TOP
Platform: |
Size: 5881 |
Author: shuiyuan313 |
Hits:
Description: 该程序在 Windows 2000 Pro+SP4 下编译调试通过(Visual C++ 6.0 IDE环境)。
需要Winsock2支持。
1.该程序采用了winsock的原始套接字编程,实现了基本的Ping功能,使用方法:ping host,默认连续发送4个回显请求。
2.该程序中对ICMP首部的定义采用了非标准形式。即将选项数据中保存时间戳的头4个字节也定义为ICMP首部的一部分,这样ICMP首部就被定义为12个字节。这样主要做主要是为了编程的实现与理解上的方便。
3.根据习惯ICMP首部的标示符字段填充了进程ID。
4.该程序实现了在IP首部记录路由的RR功能,最多记录9个地址。
要实现的功能参数:
1.n 参数 设定发送回显请求的数量
2.l 参数 设定选项数据的填充字节数
3.t 参数 持续的发送回显请求,直到用户按下Control-C停止
4 w 参数 设定接收超时的时间,以毫秒为单位
参数的具体说明可以参考windows自带的ping程序-the program in Windows 2000 SP4 Pro compiler under through debugging (Visual C 6.0 IDE environment). Winsock2 need support. 1. The procedure adopted protocols of the original socket programming, the basic implementation of Ping function, Use : ping host, the default four consecutive send the request back significantly. 2. The procedure for the first ICMP using the definition of non-standard forms. Upcoming options to preserve the timestamp data for the first four bytes are defined as ICMP first part, the first such ICMP was defined as 12 bytes. This is done primarily to the realization of programming and understanding for it. 3. Under customary ICMP first marker Address field filled with the process ID. 4. The program achieved in the first record of IP routing RR functions, the most record
Platform: |
Size: 14336 |
Author: 赵锐 |
Hits:
Description: See Appendix B for a description of the programs included
on this companion disk. RESOURCE.WRI identifies other books
and resources for Internet programming. WEBHELP.HLP contains
an introduction to the World Wide Web. TCPMAN.HLP provides
detailed instructions to help you use the Trumpet Winsock
included on this disk. Use the Program Manager s File menu
Run option to execute the SETUP.EXE program found on this
disk. SETUP.EXE will install the programs on your hard drive
and create an Internet Programming group window.
Internet编程技术 [配套程序]
[涉及平台] VC
[作者] void
[文件大小] 1032K -See Appendix B for a description of the prog rams included on this companion disk. RESOURCE . WRI identifies books and other resources for I '96 programming. WEBHELP.HLP contains an introduction to the World Wide Web. TCPMAN.HLP provides detailed instructions to help you use the Trumpet Winsock included on this disk. Use t he Program Manager Run s File menu option to exec pop the SETUP.EXE program found on this disk. SE TUP.EXE will install the programs on your hard d RCD and create an Internet Programming group w INDOW. Internet programming techniques [supporting] [procedures involving platform] VC [Author] void [Size] 1032K
Platform: |
Size: 979968 |
Author: 罗宝生 |
Hits:
Description:
Platform: |
Size: 9253888 |
Author: 李宁 |
Hits:
Description: winsock实现网络通信(UDP)异步模式-winsock network communications (UDP) asynchronous mode
Platform: |
Size: 139264 |
Author: 陈相镇 |
Hits:
Description: 套接字 重叠模型 ,重叠I / O(Overlapped I/O)
模型使应用程序能达到更佳的系统性能。重叠模型的基本设计原理便是让应用程序使用一个
重叠的数据结构,一次投递一个或多个Winsock I/O请求。针对那些提交的请求,在它们完成
之后,应用程序可为它们提供服务。该模型适用于除Windows CE之外的各种Wi n d o w s平台。
模型的总体设计以Wi n 3 2重叠I / O机制为基础。那个机制可通过R e a d F i l e和Wr i t e F i l e两个函数,
针对设备执行I / O操作。-Socket overlap model, overlapping I/O (Overlapped I/O) model so that applications can achieve better system performance. The basic design principles overlap model is to enable applications to use an overlapping of the data structure, a delivery of one or more Winsock I/O requests. For those requests submitted in their complete, the application can provide them with services. The model is applicable in addition to Windows CE platform outside of Wi ndows. The overall design of the model to Wi n 3 2 overlapping I/O mechanisms. That the mechanism by R ead F ile and Wr ite F ile two functions for the device performs I/O operations.
Platform: |
Size: 3072 |
Author: qin |
Hits: