计算机网络编程课程设计


    
    课题:基TCPSocket通讯编程
    课程设计目:
    1 够深刻解socket编程思想
    2 实现层面理解TCPUDP链接
    二 课程设计环境:
    1 windows XP win7 系统
    2 配置java虚拟机环境变量
    3 编写java程序软件Eclipse
    三 课程设计原理:
    Windows Sockets规范意提供应程序开发者套简单API家网络软件供应商遵守外特定版Windows基础Windows Sockets定义二进制接口(ABI)保证应Windows Sockets API应程序够网络软件供应商符合Windows Sockets协议实现工作份规范定义应程序开发者够网络软件供应商够实现套库函数调相关语义 遵守套Windows Sockets规范网络软件称Windows Sockets兼容Windows Sockets兼容实现提供者称Windows Sockets提供者网络软件供应商必须百分百实现Windows Sockets规范做现Windows Sockets兼容

    四 课程设计容:
    (1) 网络程序初始化服务器客户端WinSock API均求调WinSock函数前先调WSAStartUp函数初始化
    (2)创建套接字Socket()
    (3)配置启动套接字
    (4)通Socket发送接收数

    (5)程序结束时必须关闭SocketWSAStartUp()相应函数WSACleanUp()释放分配部缓区资源
    代码:
    EchoThreadServer
    import javanet*
    public class EchoThreadServer {
    public static void main(String[] args) throws Exception{
    TODO Autogenerated method stub
    ServerSocket server null
    Socket client null
    InetAddress remAdd null
    server new ServerSocket(12345)
    boolean f true
    while (f) {
    Systemoutprintln(连接正建立请等……)
    client serveraccept()
    Systemoutprintln(客户端IP址端口号 + clientgetLocalSocketAddress())
    new Thread(new EchoThread(client))start()
    }
    serverclose()
    }
    }
    EchoThread
    import javaio*
    import javanetSocket
    public class EchoThread implements Runnable{
    private Socket client null
    public EchoThread(Socket client)
    {
    thisclient client
    }
    public void run()
    {
    BufferedReader buf null
    PrintStream out null
    BufferedReader input null
    try {
    out new PrintStream(clientgetOutputStream())
    buf new BufferedReader(new InputStreamReader(clientgetInputStream()))
    input new BufferedReader(new InputStreamReader(Systemin))
    boolean flag true
    while(flag)
    {
    String str bufreadLine()
    Systemoutprintln(Client + str)
    if (str null || equals(str)) {
    flag false
    }
    else if(goodbyeequals(str)) {
    flag false
    }
    else {
    outprintln(Echo + str)
    }
    }
    clientclose()
    } catch (Exception e) {
    TODO handle exception
    }
    }
    }
    EchoClient
    import javaioBufferedReader
    import javaioInputStreamReader
    import javaioPrintStream
    import javanetSocket
    public class EchoClient {
    public static void main(String[] args) throws Exception{
    Socket client null
    client new Socket(localhost12345)
    BufferedReader buf null
    PrintStream out null
    BufferedReader input null
    input new BufferedReader(new InputStreamReader(Systemin))
    buf new BufferedReader(new InputStreamReader(clientgetInputStream()))
    out new PrintStream(clientgetOutputStream())
    boolean flag true
    while(flag){
    Systemoutprintln(客户端输入信息)
    String str inputreadLine()
    outprintln(str)
    if (goodbyeequals(str)) {
    flag false
    }
    else {
    String echo bufreadLine()
    Systemoutprintln(echo)
    }
    }
    bufclose()
    clientclose()
    }
    }

    五 课程设计结果截图:
    服务器端截图:

    客户端截图:

    六 课程设计总结:










    课题二:端口扫描
    课程设计目:
    1 加深课堂讲授知识理解
    2 熟练掌握基网络编程技术方法
    3 建立网络编程整体概念
    4 培养具研究设计编制调试网络程序力
    二 课程设计环境:
    1windows XP win7 系统
    2配置java虚拟机环境变量
    3编写java程序软件Eclipse
    三 课程设计原理
    1. 端口扫描器功简介:服务器开放端口潜通信通道入 侵通道目标计算机进行端口扫描许信息进行端口扫描方法手工进行扫描端口扫描软件进行扫描器通选远程TCPIP端口服务记录目标予回答通种方法搜集关目标机种信息例远程系统否支持匿名登陆否存写 FTP 目录否开放 TELNET 服务 HTTPD 服务等
    2.实验端口扫描技术:端口扫描技术 TCP connect()扫描 TCP SYN 扫描TCP FIN 扫描IP段扫描等等次实验技术TCP connect()扫描基TCP扫描操作系统提供 connect()系统调感兴趣目标计算机端口进行连接果端口处侦听状态connect()成功否端口 没提供服务技术优点需权限系统中户权利调
    四 课程设计容:
    编写端口扫描程序够显示某IP某段IP计算机某某端口否正工作基工作程:
    (1) 设定定端口扫描范围
    (2) 设定端口扫描次数端口次扫描通
    (3) 创建 socket通socketconnect方法连接远程IP址应端口
    (4)果返回false表示端口没开放否端口开放
    实现代码:
    package comhansocket

    import javaawtBorderLayout
    import javaawtGridLayout
    import javaawteventActionEvent
    import javaawteventActionListener
    import javanetInetAddress
    import javanetSocket
    import javaxswingJButton
    import javaxswingJFrame
    import javaxswingJLabel
    import javaxswingJPanel
    import javaxswingJScrollPane
    import javaxswingJTextArea
    import javaxswingJTextField
    public class SocketView {
    public static void main(String[] args) {
    JFrame frame new JFrame(机端口扫描程序)
    framesetLayout(new BorderLayout(33))
    JPanel pan1 new JPanel()
    JPanel pan2 new JPanel()
    JPanel pan3 new JPanel()
    pan1setLayout(new GridLayout(2255))
    pan2setLayout(new BorderLayout(33))
    pan3setLayout(new GridLayout(1255))
    framesetSize(400 450)

    定义组件
    JLabel lb1 new JLabel(Host Address)
    JLabel lb2 new JLabel(Port Number)
    JLabel lb3 new JLabel(Port Status)
    final JTextField jf1 new JTextField()
    final JTextField jf2 new JTextField()
    final JTextArea ja new JTextArea()
    JButton jb1 new JButton(TCP Scan)
    JButton jb2 new JButton(UDP Scan)
    JScrollPane jp new JScrollPane(ja)

    pan1add(lb1)
    pan1add(lb2)
    pan1add(jf1)
    pan1add(jf2)
    pan2add(lb3BorderLayoutNORTH)
    pan2add(jpBorderLayoutCENTER)
    pan3add(jb1)
    pan3add(jb2)

    frameadd(pan1BorderLayoutNORTH)
    frameadd(pan2BorderLayoutCENTER)
    frameadd(pan3BorderLayoutSOUTH)
    framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE)
    framesetVisible(true)
    jb1addActionListener(new SocketPort())
    class SocketPort implements ActionListener {
    private String ip jf1getText()

    private String hostname new String()
    public void actionPerformed(ActionEvent e) {
    try {
    InetAddress address InetAddressgetByName(ip)
    Systemoutprintln(address)
    hostname addressgetHostName()
    Systemoutprintln(hostname)
    jasetText(hostname)
    } catch (Exception exception) {
    Systemoutprintln(Could not find + ip)
    jasetText(Could not find + ip)
    }
    try {
    PrintWriter fout new PrintWriter( new FileWriter(PortInftxt))
    foutprintln(Information Of The Port On the + hostname +computer )
    foutprintln()
    jasetText(Information Of The Port On the + hostname +computer)
    for(int nport 25nport < 27++nport){
    try {
    Socket s new Socket(hostnamenport)
    foutprintln(The port + nport + is open)
    foutprintln(Connected to + sgetInetAddress() + on port + sgetPort() + from port + sgetLocalPort() + of + sgetLocalAddress())
    jasetText(The port + nport + is open)
    jasetText(Connected to + sgetInetAddress() + on port + sgetPort() + from port + sgetLocalPort() + of + sgetLocalAddress())

    } catch (Exception exception) {
    TODO handle exception
    foutprintln(The port + nport + is closed)
    jasetText(The port + nport + is closed)
    }
    }
    foutclose()
    } catch (Exception exception) {
    exceptionprintStackTrace()
    }

    }
    }
    }
    }

    五 课程设计结果截图:


    七 课程设计总结


    课题三:捕获分析IP数包
    课程设计目:
    1 掌握IP数报格式
    2 理解IP协议工作原理工作程
    3 学会网络编程方法技巧
    二 课程设计环境:
    1 windows XP win7 系统
    2 太网访问外部网页
    3 VC程序编辑器
    三 课程设计原理:
    IP 数包格式说明IP数包格式包含标头固定部分标头变部分数区三部分IP数报标头部分固定20字节中包含12参数域参数域隐含着网间协议传输机制IP具体标头格式图示

    四 课程设计容:
    设计目标捕获网络中IP数包解析数包容结果显示标准输出时写入日志文件
    程序具体求: 
    (1)捕获网络中IP数包解析数包容显示结果结果写入日志文件
    (2)显示容包括:捕获IP包版头长度服务类型数包总长度数包标识分段标志分段偏移值生存时间层协议类型头校验源IP址目IP址等容
    (3)设置停止标志程序接收停止命令时停止
    代码:
    #include
    #pragma comment( lib Ws2_32lib )
    struct ether_header
    {
    u_int8_t ether_dhost[6]
    u_int8_t ether_shost[6]
    u_int16_t ether_type
    }

    typedef u_int32_t in_addr_t
    *struct in_addr
    {
    in_addr_t s_addr
    }*
    struct ip_header
    {
    #ifdef WORDS_BIGENDIAN
    u_int8_t ip_version4
    u_int8_t ip_header_length4
    #else
    u_int8_t ip_header_length4
    u_int8_t ip_version4
    #endif
    u_int8_t ip_tos
    u_int16_t ip_length
    u_int16_t ip_id
    u_int16_t ip_off
    u_int8_t ip_ttl
    u_int8_t ip_protocol
    u_int16_t ip_checksum
    struct in_addr ip_source_address
    struct in_addr ip_destination_address
    }
    void ip_protocol_packet_callback(u_char * argumentconst struct pcap_pkthdr * packet_header
    const u_char * packet_content)
    {
    struct ip_header * ip_protocol
    u_int header_length
    u_int offset
    u_char tos
    u_int16_t checksum
    ip_protocol(struct ip_header*)(packet_content+14)
    checksumntohs(ip_protocol>ip_checksum)
    header_lengthip_protocol>ip_header_length*4
    tosip_protocol>ip_tos
    offsetntohs(ip_protocol>ip_off)
    printf(ip协议包\n)
    printf(版 d\nip_protocol>ip_version)
    printf(首部长度d\nheader_length)
    printf(服务类型 d\ntos)
    printf(总长度 d\nntohs(ip_protocol>ip_length))
    printf(标识 d\nntohs(ip_protocol>ip_id))
    printf(偏移d\n(offset&0x1fff)*8)
    printf(生存时间d\nip_protocol>ip_ttl)
    printf(协议d\nip_protocol>ip_protocol)
    switch(ip_protocol>ip_protocol)
    {
    case 6
    printf(该数包协议类型 Tcp\n)
    break
    case 17
    printf(该数包协议类型 Udp\n)
    break
    case 1
    printf(该数包协议类型 Icmp\n)
    break
    default
    break
    }
    printf(校验d\nchecksum)
    printf(源址 s\ninet_ntoa(ip_protocol>ip_source_address))
    printf(目址 s\ninet_ntoa(ip_protocol>ip_destination_address))
    }
    void ethernet_protocol_packet_callback(u_char *argumentconst struct pcap_pkthdr * packet_header
    const u_char * packet_content)
    {
    u_short ethernet_type
    struct ether_header *ethernet_protocol
    u_char *mac_string
    static int packet_number1
    printf(****************************************************************\n)
    printf( the d packet is captured \npacket_number)
    printf(太网帧\n)
    ethernet_protocol(struct ether_header *)packet_content
    printf(太网帧类型)
    ethernet_typentohs(ethernet_protocol>ether_type)
    printf(04x\nethernet_type)
    switch(ethernet_type)
    {
    case 0x0800
    printf(网络层协议 ip 协议\n)
    break
    case 0x0806
    printf(网络层协议 arp 协议\n)
    break
    case 0x8035
    printf(网络层协议 rarp 协议\n)
    break
    default
    break
    }
    printf(MAC源址)
    mac_stringethernet_protocol>ether_shost
    printf(02x02x02x02x02x02x\n*mac_string*(mac_string+1)*(mac_string+2)
    *(mac_string+3)*(mac_string+4)*(mac_string+5))
    printf(MAC目址 )
    mac_stringethernet_protocol>ether_dhost
    printf(02x02x02x02x02x02x\n*mac_string*(mac_string+1)*(mac_string+2)
    *(mac_string+3)*(mac_string+4)*(mac_string+5))
    switch(ethernet_type)
    {
    case 0x0800 ip_protocol_packet_callback(argumentpacket_headerpacket_content)
    break
    default
    break
    }
    printf(********************************************************************\n)
    packet_number++
    }
    int main()
    {
    pcap_t *pcap_handle
    char error_content[PCAP_ERRBUF_SIZE]
    char *net_interface
    struct bpf_program bpf_filter
    char bpf_filter_string[]ip
    bpf_u_int32 net_mask
    bpf_u_int32 net_ip
    net_interfacepcap_lookupdev(error_content)
    pcap_lookupnet(net_interface&net_ip&net_maskerror_content)
    pcap_handlepcap_open_live(net_interface2048010error_content)
    pcap_compile(pcap_handle&bpf_filterbpf_filter_string0net_ip)
    pcap_setfilter(pcap_handle&bpf_filter)
    if(pcap_datalink(pcap_handle)DLT_EN10MB)
    return 0
    pcap_loop(pcap_handle1ethernet_protocol_packet_callbackNULL)
    pcap_close(pcap_handle)
    }

    五 课程设计结果截图:

    六 课程设计总结:
    七 参考资料:
    [1]谢希仁.计算机网络[M].第5版.北京:电子工业出版社2008.
    [2]张基温.Visual C++程序开发基础[M].北京:高等教育出版社2001.
    [3]f15瑞.Visual c++网络通信程序开发指南[M].北京:机械工业出版社2004.







    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    计算机网络工程课程设计报告(园区网)

    网络工程实践 课程设计报告课 题: 园区网设计 姓 名: ########### 学 号: ##...

    3年前   
    794    0

    linux编程SHELL编程实验报告

    Linux编程课程设计报告题 目: Linux Shell编程 专 业 学 号 姓 名 ...

    2年前   
    632    0

    计算机网络基础课程设计Ping程序的实现

    计算机网络工程课程设计报告题 目: Ping程序的实现 学生姓名: 学 号: 专业班级: 计科...

    3年前   
    507    0

    学生公寓组网方案设计计算机网络课程设计报告

    计算机网络课程设计报告学生公寓组网方案设计学 院: ******** 姓 名: ****** 班 级: ********** 学 号: ...

    2年前   
    290    0

    电子技术课程设计-可编程时钟控制器

    电子技术课程设计可编程时钟控制器目录设计功能要求 3方案分析选择与系统框图 4模块功能分析 6仿真\下载结果 9主要经验 10操作指南 11相关代码 12设计功能要求一.设计任务数字钟不仅可以...

    3年前   
    589    0

    shell编程用户信息管理(模拟)课程设计说明书

    数学与计算机学院《Linux操作系统》课程设计说明书题 目: shell编程--用户信息管理(模拟)专 业: 班 级: ...

    1年前   
    407    0

    操作系统课程设计编程序模拟银行家算法

    课程设计报告书 课程名称: 操作系统原理 题 目: 编程序模拟银行家算法 系 名: 信息工程系 专业班级: ...

    3年前   
    735    0

    编程 汇编题目

    一、选择题1. 已知指令CALL DWORD PTR [BX]执行前(SP)=108H, 则该指令执行后SP的内容为 ( )。A. 100H B. 104H C. 0...

    4年前   
    725    0

    linux与windows 编程区别

    linux windows 编程的区别 如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix...

    7年前   
    2625    0

    软件编程实习总结

    软件编程实习总结  实习时间:3月1日―――5月9日  实习地点:广州xx大学生实训基地  实训目标:  1.通过系统性的实训,熟练掌握java se、java ee知识体系,具备java开发...

    9年前   
    533    0

    Scratch趣味编程

    Scratch趣味编程随着社会信息化程度的不断提高,掌握运用计算机 解决问题的能力显得越来越重要,计算机程序设计是培 养学生运用计算机解决问题能力的重要途径,也是培养 学生计算思维与创新能力的...

    2年前   
    734    1

    编程人员的质量感言

    质  量  感  言   质量是社会生活中最常见的概念,是企业永恒的主题,关系到企业的生存与发展。做为加工中心的一名编程人员,深知这个岗位的重要性,图纸一但输入错误会对公司造成很大的损失,...

    12年前   
    12729    0

    网络编程实习报告

    网络编程实习报告  [实习目的]   通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,并为自己能顺利与社会环境接轨做准备。[实习任务]Linux下网络服务器开发(基于C语言);本文总...

    9年前   
    536    0

    CMM实用编程技术

    CMM实用编程技术   1. 若图面各视图上均有尺寸需编程测量时,最好在每个视图上标示出坐标系,以利于判断工件在机台所处的位置   2. 在建立工件坐标系时,若无特别说明,工件坐标系应...

    9年前   
    7754    0

    数控编程实习报告

    数控编程实习报告  随着制造业的发展,机床是制造业的主要生产设备其发展也是日新月异。社会的进步,人们对各类产品的要求也越来越高,像汽车这样大批量的产品,也要求个性化。因此不能采用传统化的刚性生...

    10年前   
    596    0

    《Java趣味编程100例》

    第1章 变幻多姿的图表图表简洁直观,在各种场合得到广泛应用,给人以很强的视觉冲击,经常让人难以忘怀。我们的程序中如果能够灵活地应用图表,一定能给我们的程序增色不少。本章将带你进入变换多姿的图...

    2年前   
    852    0

    数控编程说课

    《数控加工技术》既是数控技术专业基于工作过程系统化设计的专业核心课程,又是数控工艺员,数控程序员,数控机床操作工职业资格考试的必修课程.下面我从课程设置,教学内容,教学设计,教学组织与实施,特色...

    6年前   
    14090    0

    编程模拟练习

    模拟练习 一、选择题  1、传输用的基带信号主要要求: A、原始消息代码必须编成适合于传输用的码型;  B、电波形应适合于基带系统的传输。 C、设备简单可靠。 D、A和B答案...

    10年前   
    7841    0

    UG编程(完整版)

    第二部分UG编程随堂讲义第1章 数控编程技术1.1 数控编程的基本过程数控编程是从零件设计得到合格的数控加工程序的全过程,其最主要的任务是通过计算得到加工走刀中的刀位点,即获得刀具运动的路...

    3年前   
    761    0

    SimplIQ编程笔记

    编程软件手册SimplIQ驱动描述 SimplIQ驱动器是复杂的、面向网络的、单轴数字驱动器,特色:1. 先进的控制算法,包括高阶过滤器和增益调度2. 一个复杂的参考生成算法, 其中包括绝对...

    3年前   
    645    0

    文档贡献者

    文***品

    贡献于2020-12-30

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档