版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#pragmacomment(lib,"ws2_32.lib")#include<STDIO.H>#include<WINSOCK2.H>SOCKETg_sockClient=INVALID_SOCKET;//提示程序的使用方法voidusage();//捕获关闭信息BOOLWINAPICtrlHandler(DWORDdwEvent);intmain(intargc,char*argv[]){unsignedlongdestAddr;//目标地址intnPort;//目标端口//只有两个参数,即没有给出端口号if(argc==2){destAddr=inet_addr(argv[1]);//获取要连接的目标主机的IP地址if(destAddr==INADDR_NONE){usage();〃不是合法的IP地址,则显示程序的使用方法return-1;}nPort=23;//取得IP地址之后,默认目标端口号为23,即telnet端口else〃给出了目标IP地址和目标TCP端口号if(argc==3){destAddr=inet_addr(argv[1]);〃获取要连接的目标主机的IP地址if(destAddr==INADDR_NONE){usage();〃不是合法的IP地址,则提示程序的使用方法return-1;}nPort=atoi(argv[2]);//获取目标端口号if(nPort<=0||nPort>65535){usage();//端口非法,提示用户本程序正确的使用方法return-1;}}else{//没有给出参数,则提示用户本程序正确的使用方法usage();return-1;}〃以上步骤之后,获得了目标IP,和目标TCP端口〃设置钩子,捕获控制台程序的关闭消息if(!SetConsoleCtrlHandler(CtrlHandler,TRUE)){printf("SetConsoleCtrlHandler:%d\n”,GetLastError());return-1;}//初始化WinsockWSADATAwsaData;WSAStartup(WINSOCK_VERSION,&wsaData);//创建SOCK_STREAM类型的套接口g_sockClient=socket(AF_INET,SOCK_STREAM,0);//如果创建失败,则处理if(g_sockClient==INVALID_SOCKET)(WSACleanup();return-1;}//定义sockaddr_in类型的结构变量tostructsockaddr_into;//初始化tomemset(&to,0,sizeof(to));〃给to的成员变量赋值to.sin_addr.s_addr=destAddr;//IP地址to.sin_family=AF_INET;//地址族to.sin_port=htons(nPort);//端口号〃显示用户正要连接的IP和端口号printf("connecting%s:%d ”,inet_ntoa(to.sin_addr),nPort);//如果connect连接不成功,处理if(connect(g_sockClient,(structsockaddr*)&to,sizeof(to))==SOCKET_ERROR)(if(g_sockClient!=INVALID_SOCKET)closesocket(g_sockClient);//关闭套接字g_sockClientprintf("Failed.(connect%d)\n",WSAGetLastError());WSACleanup();return-1;}elseprintf("Successfully.\n");//提示连接成功//定义83字节的数组,用于发送数据charbufa[83];//定义1000字节的数组,用于接收服务器返回的信息charbufb[1000];〃为了使用select检查是否有数据到来,定义端口描述字集合fd_setreadSet;//定义select函数的超时值,timeval类型结构体tvstructtimevaltv;intret,len;〃不断的发送数据、接收数据while(1){//初始化发送数据缓存memset(bufa,0,83);〃读取用户输入的一行信息到bufagets(bufa);//最多取输入的前80个字符len=strlen(bufa);if(len>80)len=80;bufa[len]='\r';bufa[len+1]='\n';bufa[len+2]=0;〃发送数据ret=send(g_sockClient,bufa,strlen(bufa),0);//如果发送失败,处理if(ret==SOCKET_ERROR)(printf("send:%d\n”,WSAGetLastError());break;}//初始化readSetFD_ZERO(&readSet);//将套接字g_sockClient加入readSetFD_SET(g_sockClient,&readSet);tv.tv_sec=3;//3秒tv.tv_usec=0;//毫秒最长等待时间为3秒+0毫秒〃调用select,有数据可读或等待超时返回ret=select(0,&readSet,NULL,NULL,&tv);//如果调用select结果返回出错if(ret==SOCKET_ERROR)(printf("selcet:%d\n”,WSAGetLastError());break;}//如果select等待超时:if(ret=0)(printf("Timeout,NoResponseFromServer.\n");break;}//如果g_sockClient在readSet里面,即g_sockClient这时候可读if(FD_ISSET(g_sockClient,&readSet)){//准备接收数据memset(bufb,0,1000);//接收数据ret=recv(g_sockClient,bufb,1000,0);//接收数据失败,则提示if(ret==SOCKET_ERROR)(printf("recv:%d\n”,WSAGetLastError());break;}else{printf("%s",bufb);//接收成功,则显示接收到的数据}}}//关闭g_sockClientif(g_sockClient!=INVALID_SOCKET)closesocket(g_sockClient);//卸载WSACleanup();printf("Stopped.\n");return0;voidusage(){printf("usage:\tmyelnetx.x.x.xport\t\t\t(0<port<65535)\n");}BOOLWINAPICtrlHandler(DWORDdwEvent){switch(dwEvent){caseCTRL_C_EVENT://用户按下CTRL+CcaseCTRL_LOGOFF_EVENT://当前用户注销caseCTRL_SHUTDOWN_EVENT://系统关闭caseCTRL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年周口A1客运从业资格证
- 个人房屋抵押借款协议书2024年
- 2024年湖北客运资格证专业知识试题及答案
- 2024年合同无效后的处理原则
- 2024年借用资质协议
- 2024年简易用工协议书范本
- 2024年修缮修理协议
- 2024年采购合作协议范本
- 港航实务 皮丹丹 教材精讲班课件 18-第1章-1.7.2-港口与航道工程大体积混凝土裂缝控制措施(一)
- 2024年公司合作经营合同
- 期中检测卷(1-4单元)(试题)-2024-2025学年二年级上册数学人教版
- 2024-2030年中国高岭土市场运行态势分析与发展现状调研报告
- 8.2敬畏生命 (课件)-2024-2025学年统编版道德与法治七年级上册
- 期中测试(1~3单元)(试题)-2024-2025学年三年级上册数学苏教版
- 口腔颌面部损伤-口腔颌面部损伤清创术(口腔科技术)
- JJF 1049-2024温度传感器动态响应校准规范
- 人教版七年级音乐上册(简谱)第一单元《中学时代》 教案
- DB50T731-2016 残疾儿童康复机构等级划分要求
- 人教版七年级英语上册教学课件Unit 3 My School
- 2024-2030年中国节庆饰品市场发展趋势及营销策略分析报告
- JJG 643-2024标准表法流量标准装置
评论
0/150
提交评论