计算机网络编程课程设计_第1页
计算机网络编程课程设计_第2页
计算机网络编程课程设计_第3页
计算机网络编程课程设计_第4页
计算机网络编程课程设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题一:基于TCP的Socket通讯编程一、 课程设计目的:能够深刻了解socket编程思想;从实现层面理解TCP和UDP链接的不同。二、 课程设计环境:windowsXP或win7系统;配置有java虚拟机的环境变量;3•编写java程序的软件Eclipse。三、 课程设计原理:WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,WindowsSockets也定义了一个二进制接口(ABI),以此来保证应用WindowsSocketsAPI的应用程序能够在任何网络软件供应商的符合WindowsSockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套WindowsSockets规范的网络软件,我们称之为WindowsSockets兼容的,而WindowsSockets兼容实现的提供者,我们称之为WindowsSockets提供者。一个网络软件供应商必须百分之百地实现 WindowsSockets规范才能做到现WindowsSockets兼容。四、 课程设计内容:网络程序初始化,服务器和客户端WinSockAPI均要求在调用其他WinSock函数以前先调用WSAStartUp函数初始化。创建套接字Socket()。配置并启动套接字。通过Socket发送和接收数据。程序结束时必须关闭Socket,使用与WSAStartUp()相对应的函数WSACleanUp(),释放所分配的内部缓冲区和其他资源。代码:EchoThreadServer:importjava.net.*;publicclassEchoThreadServer{publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstubServerSocketserver=null;Socketclient二null;InetAddressremAdd=null;server=newServerSocket(12345);booleanf=true;while(f){……");client二server.accept();newThread(newEchoThread(client)).start();}server.close();}}EchoThread:importjava.io.*;publicclassEchoThreadimplementsRunnable{privateSocketclient二null;publicEchoThread(Socketclient){this.client二client;}publicvoidrun(){BufferedReaderbuf=null;PrintStreamout二null;BufferedReaderinput二null;try{out二newPrintStream(client.getOutputStream());buf = new BufferedReader(newInputStreamReader(client.getlnputStream()));input 二 new BufferedReader(newInputStreamReader(System.in));booleanflag=true;while(flag){Stringstr=buf.readLine();if(str==null||"".equals(str)){flag=false;}elseif("goodbye".equals(str)){flag=false;}else{out.println("Echo:"+str);}}client.close();}catch(Exceptione){//TODO:handleexception}}}EchoClient:publicclassEchoClient{publicstaticvoidmain(String[]args)throwsException{Socketclient二null;client二newSocket(“localhost",12345);BufferedReaderbuf=null;PrintStreamout二null;BufferedReaderinput二null;input二newBufferedReader(newInputStreamReader(System.in));buf = new BufferedReader(newInputStreamReader(client.getlnputStream()));out二newPrintStream(client.getOutputStream());booleanflag=true;while(flag){Stringstr=input.readLine();out.println(str);if("goodbye".equals(str)){flag=false;}else{Stringecho=buf.readLine();}}buf.close();client.close();}}五、 课程设计结果截图:服务器端截图:客户端截图:六、 课程设计总结:课题二:端口扫描一、 课程设计目的:加深对课堂讲授知识的理解;熟练的掌握基本的网络编程技术和方法;建立网络编程整体概念;4•培养具有研究、设计、编制和调试网络程序的能力。二、 课程设计环境:windowsXP或win7系统;配置有java虚拟机的环境变量;3•编写java程序的软件Eclipse。三、 课程设计原理:端口扫描器功能简介:服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如远程系统是否支持匿名登陆、是否存在可写的FTP目录、是否开放TELNET服务和HTTPD服务等。实验所用的端口扫描技术:端口扫描技术有TCPconnect()扫描、TCPSYN扫描、TCPFIN扫描、IP段扫描等等。本次实验所用的技术是TCPconnect()扫描,这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。四、 课程设计内容:编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。基本工作过程如下:设定好一定的端口扫描范围;设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通;创建socket,通过socket的connect方法来连接远程IP地址以及对应的端口;如果返回false,表示端口没有开放,否则端口开放。实现代码:publicclassSocketView{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("主机端口扫描程序");frame.setLayout(newBorderLayout(3,3));JPanelpan1 = new JPanel();JPanelpan2 = new JPanel();JPanelpan3 = new JPanel();pan1.setLayout(newGridLayout(2,2,5,5));pan2.setLayout(newBorderLayout(3,3));pan3.setLayout(newGridLayout(1,2,5,5));frame.setSize(400,450);//定义各个组件JLabellb1=newJLabel("HostAddress");JLabellb2=newJLabel("PortNumber");JLabellb3=newJLabel("PortStatus");finalJTextFieldjf1=newJTextField();finalJTextFieldjf2=newJTextField();finalJTextAreaja=newJTextArea();JButtonjb1=newJButton("TCPScan");JButtonjb2=newJButton("UDPScan");JScrollPanejp=newJScrollPane(ja);pan1.add(lb1);panl.add(lb2);panl.add(jfl);panl.add(jf2);pan2.add(lb3,BorderLayout.NORTH);pan2.add(jp,BorderLayout.CENTER);pan3.add(jbl);pan3.add(jb2);frame.add(panl,BorderLayout.NORTH);frame.add(pan2,BorderLayout.CENTER);frame.add(pan3,BorderLayout.SOUTH);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);jbl.addActionListener(newSocketPort());classSocketPortimplementsActionListener{privateStringip=jfl.getText();;privateStringhostname=newString();publicvoidactionPerformed(ActionEvente){try{InetAddressaddress=InetAddress.getByName(ip);hostname=address.getHostName();ja.setText(hostname);}catch(Exceptionexception){ja.setText("Couldnotfind"+ip);}try{PrintWriter fout二newPrintWriter(newFileWriter("Portlnf.txt"));fout.println(“InformationOfThePortOnthe"+hostname+"computer");fout.println();ja.setText("InformationOfThePortOnthe"+hostname+"computer");for(intnport二25;nport<27;++nport){try{Sockets=newSocket(hostname,nport);fout.println("Theport"+nport+"isopen!");fout.println("Connected to "+s.getInetAddress()+"onport"+s.getPort() +"fromport"+s.getLocalPort()+"of"+s.getLocalAddressO);ja.setText("Theport"+nport+"isopen!")ja.setText("Connectedto"+s.getInetAddress()+"onport"+s.getPort()+"fromport"+s.getLocalPort()+"of"+s.getLocalAddressO);}catch(Exceptionexception){//TODO:handleexceptionfout.println("Theport" +nport+"isclosed!");ja.setText("Theport"+nport+"isclosed!");}}fout.close();}catch(Exceptionexception){exception.printStackTrace();}}}}] 五、 课程设计结果截图:六、 课程设计总结课题三:捕获分析IP数据包一、 课程设计目的:1•掌握IP数据报的格式;理解IP协议的工作原理及工作过程;学会网络编程的方法和技巧。二、 课程设计环境:l.windowsXP或win7系统;2•以太网,可以访问外部网页;VC程序编辑器。三、 课程设计原理:IP数据包的格式说明IP数据包格式包含了标头固定部分,标头可变部分和数据区三部分。IP数据报标头部分固定为20个字节,其中包含了12个参数域,各参数域隐含着网间协议的传输机制。IP具体的标头格式如图所示。四、 课程设计内容:本设计的目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。程序的具体要求如下:捕获网络中的IP数据包,解析数据包的内容,显示结果,并将结果写入日志文件。显示的内容包括:捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。设置停止标志,当程序接收到停止命令时即停止。代码:#include<pcap.h>#pragmacomment(lib,〃Ws2_32.lib〃);structether_header{—u_int8_tether_dhost[6];u_int8_tether_shost[6];u_intl6_tether_type;};typedefu_int32_tin_addr_t;/*structin_addr{—in_addr_ts_addr;};*/structip_header{#ifdefWORDS_BIGENDIANu_int8_tip_version:4;u_int8_tip_header_length:4;#elseu_int8_tip_header_length:4;u_int8_tip_version:4;#endifu_int8_tip_tos;u_intl6_tip_length;u_intl6_tip_id;u_intl6_tip_off;u_int8_tip_ttl;u_int8_tip_protocol;u_intl6_tip_checksum;structin_addrip_source_address;structin_addrip_destination_address;};structvoidip_protocol_packet_callback(u_char*argument,constpcap_pkthdr*packet_header,structconstu_char*packet_content){structip_header*ip_protocol;u_intheader_length;u_intoffset;u_chartos;u_intl6_tchecksum;ip_protocol=(struetip_header*)(packet_content+14);checksum二ntohs(ip_protocol->ip_checksum);headerlength二ipprotocol->ipheaderlength*4;tos=ip_protocol->ip_tos;offset二ntohs(ip_protocol->ip_off);printf(“ ip协议包 \n");printf("版本:%d\n",ip_protocol->ip_version);printf(“首部长度:%d\n",header_length);printf(“服务类型:%d\n",tos);printf("总长度:%d\n",ntohs(ip_protocol->ip_length));printf("标识:%d\n",ntohs(ip_protocol->ip_id));printf(“偏移:%d\n",(offset&Oxlfff)*8);printf(“生存时间:%d\n",ip_protocol->ip_ttl);printf("协议:%d\n",ip_protocol->ip_protocol);switch(ip_protocol->ip_protocol){case6:printf("该数据包协议类型是Tcp\n");break;case17:printf("该数据包协议类型是Udp\n");break;case1:printf("该数据包协议类型是Icmp\n");break;default:break;}printf(“校验和:%d\n",checksum);printf("源地址:%s\n",inet_ntoa(ip_protocol->ip_source_address));printf(“ 目 的 地址:%s\n",inet_ntoa(ip_protocol->ip_destination_address));}voidethernet_protocol_packet_callback(u_char*argument,conststructpcap_pkthdr*packet_header,constu_char*packet_content){u_shortethernet_type;structether_header*ethernet_protocol;u_char*mac_string;staticintpacket_number=l;printf(“*************************************************************printf(“printf(“the%dpacketiscaptured\n",packet_number);printf(“ 以太网帧 \n");ethernet_protocol=(struetether_header*)packet_content;printf(“以太网帧类型:");ethernet_type=ntohs(ethernet_protocol->ether_type);printf("%04x\n",ethernet_type);switch(ethernet_type){case0x0800:printf("网络层协议是ip协议\n");break;case0x0806:printf("网络层协议是arp协议\n");break;case0x8035:printf("网络层协议是rarp协议\n");break;default:break;}printf(〃MAC源地址:〃);mac_string二ethernet_protocol->ether_shost;printf(〃%02x:%02x:%02x:%02x:%02x:%02x\n〃,*mac_string,*(mac_string+1),*(mac_string+2),*(mac_string+3),*(mac_string+4),*(mac_string+5));printf(〃MAC目的地址:〃);mac_string二ethernet_protocol->ether_dhost;printf(〃%02x:%02x:%02x:%02x:%02x:%02x\n〃,*mac_string,*(mac_string+1),*(mac_string+2),*(mac_string+3),*(mac_string+4),*(mac_string+5));sw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论