




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计报告设计名称: 双机通信IP数据包的解析专 业: 计算机科学与技术(交通信息工程)班 级: 201324020311姓 名: 李 俊指导教师: 徐 丽2015 年 12 月 26 日课设一:双机通信2摘要:2一、 引言31、课程设计目的:32、课程设计要求:3二、 设计原理3三、 程序代码设计流程41、服务器流程图42、.客户端流程图:4四、 结果及分析4运行结果:42、分析:5五、 源代码51. MainServer.java52. Server.java83. MainClient.java94. Client.java125.Constant.java13课设二:IP包
2、的解析14摘要:14一、引言141、课程设计目的:142、课程设计要求:14二、设计原理14三、程序代码设计流程15四、结果及分析161、运行结果162、分析16五、源代码16课设一:双机通信摘要:网络技术的发展非常迅速,在企业、机关、学校的信息管理与服务领域得到广泛的应用。随着网络体系结构和协议标准研究的进展、操作系统的发展以及光纤技术的引入,网络通信技术得到了快速发展。目前,网络分层结构使用最多的就是TCP/IP架构,作为TCP/IP架构的重要支柱TCP协议在网络的发展中起到了至关重要的作用,TCP协议处于TCP/IP架构的传输层,其在IP层的基础上,向应用层用户进程提供可靠的、全双工的数
3、据流传输。 关键词 TCP;传输层;java ;双机即时通信 1、 引言网络技术的发展非常迅速,在企业、机关、学校的信息管理与服务领域得到广泛的应用。随着网络体系结构和协议标准研究的进展、操作系统的发展以及光纤技术的引入,网络技术得到了快速发展。目前网络的使用覆盖全社会的各个角落。因此,学习TCP传输技术对深入掌握网络知识是非常重要的。1、课程设计目的:使用套接字socket建立一个简单的基于TCP的客户/服务器形式的网络程序了解面向连接的通信原理2、课程设计要求:(1)服务器端的搭建(2)客户端的搭建(3)实现双机通信3、设计平台JVM2、 设计原理客户机/服务器模式在操作过程中采取的是主动
4、请示的方式。(1) 首先服务器要先启动,并根据请示提供相应服务,过程如下:a) 打开通信通道并告知本地主机,它愿意在某个公认地地址上接受客户的请求。b) 等待客户请求到达该端口。c) 接受到重复请求服务,处理该请求并发送应答信号。d) 返回第二部等待另一客户请求。e) 关闭服务器(2) 客户机启动后,向服务器发出请求,过程如下:a) 打开通道信号,并连接到服务器所在主机的特定端口b) 向服务器发送服务请求,等待并接受应答;继续提出请求。c) 请求结束后关闭通道并终止。3、 程序代码设计流程1、服务器流程图启动服务器等待客户请求通信 Y N关闭服务器2、.客户端流程图:启动客户机等待服务器连接通
5、信 Y N关闭客户机4、 结果及分析运行结果:2、分析:服务器和一直在等待客户机的连接,知道有客户机接入;客户机一直在请求服务器,知道服务器响应;当两者条件同时满足,TCP建立一条通道,可以进行通信。5、 源代码1. MainServer.java/*MainServer.java*/import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt
6、.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.io.ObjectOutputStream;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import j
7、avax.swing.JTextField;public class MainServer extends JFrame private JScrollPane scrollPane1;private JTextArea ta_show;private JPanel panel1;private JTextField tf_message;private JButton btn_send;private final int SHOW_ROWS = 11;private ObjectOutputStream out;public MainServer() initComponents();pri
8、vate void initComponents() scrollPane1 = new JScrollPane();ta_show = new JTextArea();panel1 = new JPanel();tf_message = new JTextField();btn_send = new JButton();setTitle("Server-服务器端程序");addWindowListener(new WindowAdapter() public void WindowsClosing(WindowEvent e) thisGraphicClosing(e);
9、);Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout();ta_show.setRows(SHOW_ROWS);ta_show.setEditable(false);scrollPane1.setViewportView(ta_show);contentPane.add(scrollPane1, BorderLayout.SOUTH);panel1.setLayout(new FlowLayout();/ - tf_message -tf_message.setPreferredSiz
10、e(new Dimension(320, 25);panel1.add(tf_message);/ - btn_send -btn_send.setText("Send");btn_send.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) btn_sendActionPerformed(e););panel1.add(btn_send);contentPane.add(panel1, BorderLayout.NORTH);pack();setLocation
11、RelativeTo(getOwner();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);private void btn_sendActionPerformed(ActionEvent e) try out.writeObject(tf_message.getText();out.flush();show("服务器端>> " +tf_message.getText();tf_message.setText(""); catch (IOException ie) ie.printStackTra
12、ce();private void thisGraphicClosing(WindowEvent e) if (out != null) try out.writeObject(Constant.CONNECT_QUIT);out.flush(); catch (IOException ie) ie.printStackTrace();public void setOut(ObjectOutputStream out) this.out = out;public void show(String mess) ta_show.append(mess + "n");ta_sho
13、w.setCaretPosition(ta_show.getText().length();2. Server.java/*Server.java*/import java.io.EOFException;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import .ServerSocket;import .Socket;public class Server private MainServer frame;private ObjectOutputSt
14、ream out;private ObjectInputStream in;private ServerSocket serverSocket;private Socket socket;private int counter = 1;public Server() frame = new MainServer();frame.setVisible(true);server_start();private void server_start() try serverSocket = new ServerSocket(Constant.LISTEN_PORT, 20);while (true)
15、/ 等待连接frame.show("等待连接,请稍候");socket = serverSocket.accept();/ 建立连接frame.show("已与客户端" + socket.getInetAddress().getHostName()+ "建立连接!");frame.show("-");out = new ObjectOutputStream(socket.getOutputStream();/frame.show(String(out);/frame.show();frame.setOut(out)
16、;/out.writeObject("服务器端>> 连接成功");out.flush();/ 保持通信in = new ObjectInputStream(socket.getInputStream();String messagein = ""while (true) try messagein = (String) in.readObject();System.out.println(messagein);if (messagein.equals(Constant.CONNECT_QUIT) frame.setOut(null);brea
17、k;frame.show("客户端>> " + messagein); catch (Exception e) e.printStackTrace();/ 结束连接frame.show("客户端" + socket.getInetAddress().getHostName()+ "中断了连接!");out.close();in.close();socket.close();+counter; catch (EOFException eofException) eofException.printStackTrace();
18、catch (IOException ioException) ioException.printStackTrace();/ main()方法public static void main(String args) new Server();3. MainClient.java/*MainClient.java*/import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent
19、;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.io.ObjectOutputStream;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JT
20、extArea;import javax.swing.JTextField;/import tools.Constant;public class MainClient extends JFrame private JScrollPane scrollPane1;private JTextArea ta_show;private JPanel panel1;private JTextField tf_message;private JButton btn_send;private final int SHOW_ROWS = 11;private ObjectOutputStream out;p
21、ublic MainClient() initComponents();private void initComponents() scrollPane1 = new JScrollPane();ta_show = new JTextArea();panel1 = new JPanel();tf_message = new JTextField();btn_send = new JButton();setTitle("Client-客户端程序");/ 设置标题addWindowListener(new WindowAdapter() public void WindowsC
22、losing(WindowEvent e) thisGraphicClosing(e););Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout();/ 添加scrollPane1ta_show.setRows(SHOW_ROWS);ta_show.setEditable(false);scrollPane1.setViewportView(ta_show);contentPane.add(scrollPane1, BorderLayout.SOUTH);/ 添加panel1panel1.
23、setLayout(new FlowLayout();tf_message.setPreferredSize(new Dimension(320, 25);panel1.add(tf_message);btn_send.setText("Send");btn_send.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) btn_sendActionPerformed(e););panel1.add(btn_send);contentPane.add(panel1,
24、 BorderLayout.NORTH);pack();setLocationRelativeTo(getOwner();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);private void btn_sendActionPerformed(ActionEvent e) try out.writeObject(tf_message.getText();out.flush();show("客户端>> " +tf_message.getText();tf_message.setText(""); c
25、atch (IOException ie) ie.printStackTrace();private void thisGraphicClosing(WindowEvent e) if (out != null) try out.writeObject(Constant.CONNECT_QUIT);out.flush(); catch (IOException ie) ie.printStackTrace();public void setOut(ObjectOutputStream out) this.out = out;public void show(String mess) ta_sh
26、ow.append(mess + "n");ta_show.setCaretPosition(ta_show.getText().length();4. Client.java/*Client.java*/import java.io.EOFException;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import .Socket;import .Socket.*;public class Client private MainC
27、lient frame; private ObjectOutputStream out;private ObjectInputStream in;private Socket socket;public Client() frame = new MainClient();frame.setVisible(true);client_start();public void client_start() try / 请求连接frame.show("连接中,请稍候");socket = new Socket(Constant.HOST_IP, Constant.LISTEN_POR
28、T);/ 连接建立frame.show("连接到服务器: " + socket.getInetAddress().getHostName();frame.show("-");out = new ObjectOutputStream(socket.getOutputStream();frame.setOut(out);out.flush();/ 保持通信in = new ObjectInputStream(socket.getInputStream();String messagein = ""/String messageout =
29、""while (true) try messagein = (String) in.readObject();/out.writeObject(messageout);if (messagein.equals(Constant.CONNECT_QUIT) frame.setOut(null);break;frame.show("服务器端>> " + messagein);/frame.show("客户端>> " + messageout); catch (Exception e) e.printStackTr
30、ace();/ 结束连接frame.show("对不起,服务器已经断开!");out.close();in.close();socket.close(); catch (EOFException eofException) System.out.println("服务器连接终止"); catch (IOException ioException) ioException.printStackTrace();public static void main(String args) new Client();5.Constant.java/*Constant
31、.java*/public class Constant public static final String HOST_IP = "2"/其他以太网地址/public static final String HOST_IP = "33"/上网IP地址/public static final String HOST_IP = ""/mac地址也能连上public static final int LISTEN_PORT = 8000;/监听端口号public stat
32、ic final String CONNECT_QUIT = "quit"/退出连接标志课设二:IP包的解析摘要:网络技术的发展非常迅速,在企业、机关、学校的信息管理与服务领域得到广泛的应用。随着网络体系结构和协议标准研究的进展、操作系统的发展以及光纤技术的引入,网络通信技术得到了快速发展。目前,网络分层结构使用最多的就是TCP/IP架构,作为TCP/IP架构的重要支柱IP协议在网络的发展中起到了至关重要的作用,IP协议处于TCP/IP架构的网络层,其在链路层的基础上,向运输层提供尽最大努力的数据传输。 关键词 IP;网络层;java ;IP包的解析 一、 引言网络技术的发
33、展非常迅速,在企业、机关、学校的信息管理与服务领域得到广泛的应用。随着网络体系结构和协议标准研究的进展、操作系统的发展以及光纤技术的引入,网络通信技术得到了快速发展。因此,学习IP协议对深入掌握网络知识是非常重要的。1、课程设计目的:本实验的目标是捕获网络中的IP数据包,解析数据包的内容,见个结果显示在标准输出上,并同时写入日志文件。2、课程设计要求:(1)抓取通过本机的IP数据包(2)对IP数据包进行解析,将解析后的结果输出在标准输出上(3)将解析后的内容写入日志文件3、设计平台JVM二、 设计原理 为了获取网络中的IP数据包,必须对网卡进行编程,我们使用套接字进行编程。1、 使用套接字2、
34、 接收数据包3、 定义IP头部的数据结构4、 IP包的解析三、 程序代码设计流程四、 结果及分析1、运行结果2、分析运行本程序首先你得下载JPcap,并配置JPcap的路径;JPcap运行时依赖WinCap的类库,所以,也必须在本机下载安装WinCap;本程序借助开源的JPcap进行抓包,然后根据IP包头的形式,对IP包进行解析,得到解析后的结果如上图。抓包和解析包用的While(ture)是死循环,当需要停止时用Ctrl+c停止即可。五、 源代码import java.io.*;import jpcap.*;import jpcap.packet.*;import java.util.*;p
35、ublic class ipAnalysis public static void main(String args)throws IOException /*绑定网络设备*/System.out.println("网络设备");NetworkInterface devices=JpcapCaptor.getDeviceList(); /返回一个网络设备列表for(NetworkInterface n : devices)System.out.println();System.out.println(n.description);System.out.print
36、ln("*");JpcapCaptor jpcap=null;int caplen = 2000;boolean promiscCheck = true;/caplen限制每一次收到一个数据包,只提取该数据包中前多少字节/Promisc:设置是否混杂模式。处于混杂模式将接收所有数据包,若之后又调用了包过滤函数setFilter()将不起任何作用/50这个参数主要用于processPacket()方法,指定超时的时间try jpcap=JpcapCaptor.openDevice(devices1,caplen,promiscCheck,50); catch (IOExcep
37、tion e) e.printStackTrace();InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);br.readLine();/*抓包并解析*/Date d = new Date();d.getDate();int year = d.getYear();int mouth = d.getMonth();int day = d.getDay();int h = d.getHours();int i = d.getMinutes();int
38、 s = d.getSeconds();String in_text_s ="*"in_text_s += year+"/"+mouth+"/"+"/"+day+" "+h+":"+i+":"+s+"rn"while(true)Packet packet = jpcap.getPacket();if(packet instanceof IPPacket )IP Packet ip=(IPPacket)packet; /将包强制转为IP包
39、System.out.println("版本号:"+ip.version);System.out.println("优先权:"+ ip.priority);in_text_s+="优先权:" + ip.priority;in_text_s+="rn"System.out.println("区分服务:最高的可靠性:" + ip.r_flag);in_text_s+="区分服务:最高的可靠性:" + ip.r_flag;in_text_s+="rn"Syste
40、m.out.println("总长度:" + ip.length);in_text_s+="区分服务:最高的可靠性:" + ip.r_flag;in_text_s+="rn"System.out.println("标识:" + ip.ident);in_text_s+="区分服务:最高的可靠性:" + ip.r_flag;in_text_s+="rn"System.out.println("DF:Don't Fragment:" + ip.dont
41、_frag);in_text_s+="DF:Don't Fragment:" + ip.dont_frag;in_text_s+="rn"System.out.println("MF:More Fragment:" + ip.more_frag);in_text_s+="MF:More Fragment:" + ip.more_frag;in_text_s+="rn"System.out.println("片偏移:" + ip.offset);in_text_s+="片偏移:" + ip.offset;in_text_s+="rn"System.out.println("生存时间:&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 畜禽产品质量追溯考核试卷
- 2025小学数学课程标准解读
- 羽绒市场细分与定位考核试卷
- 生态保护与气候变化适应性措施考核试卷
- 电梯行业发展趋势与市场分析考核试卷
- 剖宫产护理查房
- 木结构建筑加固技术考核试卷
- 港口客运与云计算服务考核试卷
- 幼儿园清明森林防火教育课程
- 脂肪栓塞综合征护理措施
- 聋哑人辅助交流系统
- 带状疱疹病人的个案护理
- 《中药鉴定技术》课件-五味子的鉴定
- 大数据 AI大模型-智慧统计大数据平台解决方案(2023版)
- 江苏省安全员《B证》考试题库及答案
- 自杀及其预防课件
- 灰姑娘童话故事
- 铅锌矿的冶炼技术进展与设备改进
- 等离子切割机操作手册与安全操作规程
- 印刷合同:纸袋印刷合作
- 快学Scala(中文版第2版)
评论
0/150
提交评论