zoukankan      html  css  js  c++  java
  • 网络编程作业 一、 填空题

    网络编程作业

    一、    填空题

    1.  ______IP地址________用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。
    2. 统一资源定位符URL是指向互联网“资源”的指针,由4部分组成:协议、存放资源的主机域名、_____端口_____和资源路径和文件名。
    3.      URL        是统一资源定位器的简称,它表示Internet上某一资源的地址。
    4. 在Socket编程中,IP地址用来    标志一台计算机,但是一台计算机上可能提供多种应用程序,使用     端口         来区分这些应用程序。
    5. 在Java Socket网络编程中,开发基于TCP协议的服务器端程序使用的套接字是    ServerSocket        
    6. 在Java Socket网络编程中,开发基于UDP协议的程序使用的套接字是   DatagramSocket        

     

    二、    选择题

    1.

    以下协议都属于TCP/IP协议栈,其中位于传输层的协议是(  AD  )。(选择二项)

     

     

     

     

    A

    TCP

     

    B.

    HTTP

     

    C.

    SMTP

     

    D.

    UDP

     

    2.

    以下协议中属于TCP/IP协议栈中应用层协议的是( A   )。(选择一项)

     

     

     

     

    A

    HTTP

     

    B.

    TCP

     

    C.

    UDP

     

    D.

    IP

     

    3.

    以下说法中关于UDP协议的说法正确的是( AD   。(选择二项)

     

     

     

     

    A.

    发送不管 对方是否准备好,接收方收到也不确认

     

    B.

    面向连接

     

    C.

    占用系统资源多、效率低

     

    D.

    非常简单的协议,可以广播发送

     

    4.

    在基于TCP网络通信模式中,客户与服务器程序的主要任务是( BC   )。(选择二项)

     

     

     

     

    A

    客户程序在网络上找到一条到达服务器的路由

     

    B.

    客户程序发送请求,并接收服务器的响应

     

    C.

    服务器程序接收并处理客户请求,然后向客户发送响应结果

     

    D.

    如果客户程序和服务器都会保证发送的数据不会在传输途中丢失

     

     

    5.

    Java网络编程中,使用客户端套接字Socket创建对象时,需要指定( A   )。(选择一项)

     

     

     

     

    A

    服务器主机名称和端口

     

    B.

    服务器端口和文件

     

    C.

    服务器名称和文件

     

    D.

    服务器地址和文件

     

    6.

    ServerSocket的监听方法accept( )方法的返回值类型是(  A   )。(选择一项)

     

     

     

     

    A.

    Socket

     

    B.

    void

     

    C.

    Object

     

    D.

    DatagramSocket

     

    7.

    Java UDP Socket编程主要用到的两个类是(  BD  )。(选择二项)

     

     

     

     

    A

    UDPSocket

     

    B.

    DatagramSocket

     

    C.

    UDPPacket

     

    D.

    DatagramPacket

     

    8.

    在使用UDP套接字通信时,常用( D   )类把要发送的信息打包。(选择一项)

     

     

     

     

    A

    String

     

    B.

    DatagramSocket

     

    C.

    MulticastSocket

     

    D.

    DatagramPacket

     

    三、    判断题

    1. Socket是传输层供给应用层的编程接口,是应用层与传输层之间的桥梁 。( T  )
    2. TCP/IP传输控制协议是Internet的主要协议,定义了计算机和外设进行通信的规则。TCP/IP网络参考模型包括七个层次:应用层、会话层、表示层、传输层、网络层、链路层和物理层。( F   )
    3. TCP协议一种面向连接的、可靠的、基于字节流的通信协议 。HTTP、FTP、TELNET、SMTP 都是基于TCP协议的应用层协议。(   T )
    4. UDP协议是一种面向无连接的、可靠的、基于字节流的传输层通信协议,该协议占用系统资源多、效率较低。(  F  )

     

    四、    简答题

    1. TCP/IP协议栈中,TCP协议和UDP协议的联系和区别?

        TCP/IP虽然名字是TCP,但是他的传输层包含TCP和UDP两个协议

        TCP是Tranfer ControlProtocol的简称,是一种面向连接的保证可靠传输的协议。

        UDP是UserDatagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息

      TCP

        优点:1、面向连接的传输;2、数据传输稳定可靠;3、端到端的通信;4、全双工方式;5、以字节为单位传输

        缺点:传输速度不够快

      UDP

        优点:1、传输速度快;2、效率高;

        缺点:数据包可能会丢失

    1. 简述基于TCP的Socket编程的主要步骤。

        提示:分别说明服务器端和客户端的编程步骤。

        在Socket的程序开发中,服务器端使用ServerSocket等待客户端的连接,对于java的网络程序来讲,每一个客户端都使用一个Socket对象表示。

        socket通讯流程:
        (1)创建Socket(客户端) ServerSocket(服务端)
        (2)客户端/服务端打开并连接Socket的输入/输出流
        (3)按照一定的规则进行读/写操作
        (4)关闭Socket相关

    1. 简述基于UDP的Socket编程的主要步骤。

        提示:分别说明服务器端和客户端的编程步骤。

        实现流程:
        服务器端(server):
        1. 构造DatagramSocket实例,指定本地端口。
        2. 通过DatagramSocket实例的receive方法接收DatagramPacket.DatagramPacket中间就包含了通信的内容。
        3. 通过DatagramSocket的send和receive方法来收和发DatagramPacket.
        客户端(client):
        1. 构造DatagramSocket实例。
        2.通过DatagramSocket实例的send和receive方法发送DatagramPacket报文。
        3.结束后,调用DatagramSocket的close方法关闭。

      1 一、    编码题
      2 1.    使用基于TCP的Java Socket编程,完成如下功能:
      3 1)    要求从客户端录入几个字符,发送到服务器端。
      4 2)    由服务器端将接收到的字符进行输出。
      5 3)    服务器端向客户端发出“您的信息已收到”作为响应。
      6 4)    客户端接收服务器端的响应信息。
      7 提示:
      8 服务器端:PrintWriter out =new PrintWriter(socket.getOutputStream(),true);
      9 客户端:BufferedReader line=new BufferedReader(new InputStreamReader(System.in));
     10 
     11 public class clint_1 {
     12     public static void main(String[] args) throws IOException {
     13         //1.创建客户端套接字
     14         Socket s = new Socket("localhost",154);
     15         //2.获取输出流(包装)>字符缓冲流>字符转换输出流>字符输出流
     16         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
     17         BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
     18         //3.写入数据
     19         Scanner sc = new Scanner(System.in);
     20         System.out.println("请输入发送信息:");
     21         bw.write(sc.nextLine());
     22         bw.flush();
     23     
     24         //4.通知服务器,客户端数据写入完毕
     25         s.shutdownOutput();
     26         
     27         //5.从服务器获得响应
     28         String info = br.readLine();
     29         System.out.println(info);
     30         s.close();
     31     }
     32 }
     33 public class Server_1 {
     34     public static void main(String[] args) throws IOException {
     35         //1.创建服务器端的套接字
     36         ServerSocket ss = new ServerSocket(154);
     37         //2.监听客户端的套接字
     38         Socket s = ss.accept();
     39         //3.获取输入流,获取输出流
     40         BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
     41         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
     42         //4.读取客户端数据
     43         System.out.println("--------------");
     44         String info = br.readLine();
     45         System.out.println(info);
     46         
     47         //响应客户端
     48         bw.write("您的信息已收到");
     49         bw.flush();
     50         //关闭客户端套接字
     51         s.close();
     52     }
     53 
     54 }
     55 
     56 2.    使用基于UDP的Java Socket编程,完成在线咨询功能:
     57 1)    客户向咨询人员咨询。
     58 2)    咨询人员给出回答。
     59 3)    客户和咨询人员可以一直沟通,直到客户发送bye给咨询人员。
     60 
     61 public static void main(String[] args){
     62         Scanner sc = new Scanner(System.in);
     63         //创建套接字
     64         DatagramSocket ds = null;
     65         try {
     66             ds = new DatagramSocket();
     67             while(true){
     68                 System.out.println("请输入发送的信息:");
     69                 String info = sc.nextLine();
     70                 byte[] buf ="".getBytes();
     71                 DatagramPacket dp = new DatagramPacket
     72                         (buf, buf.length, InetAddress.getByName("localhost"), 124);
     73                 //发送数据
     74                 ds.send(dp);
     75                 if("bye".equals(info)){
     76                     break;
     77                 }
     78             }
     79         } catch (IOException e) {
     80             e.printStackTrace();
     81         }finally {
     82             //创建数据包
     83             ds.close();
     84         }
     85         
     86     }
     87 public class Server_2 {
     88     public static void main(String[] args) throws IOException {
     89        //创建套接字
     90         DatagramSocket ds = new DatagramSocket(124);
     91         //创建接受数据的空数据包
     92         while(true){
     93             byte [] buf = new byte[1024];
     94             DatagramPacket dp = new DatagramPacket(buf, buf.length);
     95             ds.receive(dp);
     96             //拆分数据包
     97             byte [] by2 =dp.getData();
     98             InetAddress address = dp.getAddress();
     99             String hostName = address.getHostName();
    100             //读取数据
    101             String info = new String(by2,0,by2.length);
    102             System.out.println("来自*"+"@"+hostName+"*的消息是:"+info);
    103         }
    104     }
    105 }
    106 
    107 
    108 二、    可选题
    109 1.    使用TCP网络编程完成用户登录功能:客户端输入用户名和密码,向服务器发出登录请求;服务器接收数据并进行判断,如果用户名和密码均是bjsxt,则登录成功,否则登录失败,返回相应响应信息;客户端接收响应信息并输出登录结果。
    110 1)    用户User类已提供构造方法 public User(String username,String password)。
    111 2)    客户端采用ObjectOutputStream发送封装了用户名和密码的User对象。
    112 3)    服务器端和客户端的类名和方法声明如下所示。
    113  import java.io.BufferedReader;
    114 import java.io.BufferedWriter;
    115 import java.io.IOException;
    116 import java.io.InputStreamReader;
    117 import java.io.OutputStreamWriter;
    118 import java.net.Socket;
    119 import java.util.Scanner;
    120 public class clint {
    121     public static void main(String[] args) throws IOException {
    122      Socket s = new Socket("localhost", 110);
    123      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    124      BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    125      Scanner sc=  new Scanner(System.in);
    126      System.out.println("输入用户名:");
    127      String user = sc.nextLine();
    128      bw.write(user);
    129      bw.flush();
    130      bw.newLine();
    131      System.out.println("输入用户密码:");
    132      String password = sc.nextLine();
    133      bw.write(password);
    134      bw.flush();
    135      
    136      s.shutdownOutput();
    137      
    138      String info = br.readLine();
    139      System.out.println(info);
    140      
    141      s.close();
    142     }
    143 }
    144 
    145 import java.io.BufferedReader;
    146 import java.io.BufferedWriter;
    147 import java.io.FileInputStream;
    148 import java.io.IOException;
    149 import java.io.InputStreamReader;
    150 import java.io.OutputStreamWriter;
    151 import java.net.ServerSocket;
    152 import java.net.Socket;
    153 import java.util.HashMap;
    154 import java.util.Map;
    155 import java.util.Properties;
    156 
    157 
    158 public class server {
    159     public static Map<String, String> getinfo() throws  IOException{
    160         Properties p = new Properties();
    161         p.load(new FileInputStream("User.properties"));
    162         String user = p.getProperty("username");
    163         String pwd = p.getProperty("pwd");
    164         
    165         Map<String, String> map = new HashMap<>();
    166         map.put("username", user);
    167         map.put("pwd", pwd);
    168         return map;
    169     }
    170     
    171     public static void main(String[] args) throws IOException {
    172       ServerSocket ss = new ServerSocket(110);
    173       Socket s = ss.accept();
    174       BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    175       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    176       String user = br.readLine();
    177       String pwd = br.readLine();
    178       
    179       Map<String, String> map = getinfo();
    180       if(map.get("username").equals(user)&&map.get("pwd").equals(pwd)){
    181           System.out.println("登录成功!");
    182           bw.write("登录成功!");
    183           bw.flush();
    184       }else{
    185           System.out.println("登录失败!");
    186           bw.write("登录失败");
    187           bw.flush();
    188       }
    189       s.close();
    190       
    191     }
    192 }
    
  • 相关阅读:
    VS项目如何运用svn的忽略列表
    Hyper-V如何应用新的网卡
    android:Layout_weight的深刻理解
    使用WebView出现web page not available
    如何在android模拟器中导入搜狗输入法?
    ASP.Net生成静态HTML页
    微软URLRewriter.dll的url重写的简单使用(实现伪静态)
    servlet中获得tomcat项目根目录的绝对路径
    Log4j使用指南
    处理URL传递中文乱码问题
  • 原文地址:https://www.cnblogs.com/topshark/p/10251991.html
Copyright © 2011-2022 走看看