JavaSocket编程题库
⼀、填空题
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.服务器端⼝和⽂件
socket通信在哪一层
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协议的联系和区别?
2.简述基于TCP的Socket编程的主要步骤。提⽰:分别说明服务器端和客户端的编程步骤。
3.简述基于UDP的Socket编程的主要步骤。提⽰:分别说明服务器端和客户端的编程步骤。
五、编码题
1.使⽤基于TCP的Java Socket编程,完成如下功能:
1) 要求从客户端录⼊⼏个字符,发送到服务器端。
2) 由服务器端将接收到的字符进⾏输出。
3) 服务器端向客户端发出“您的信息已收到”作为响应。
4) 客户端接收服务器端的响应信息。
提⽰:
服务器端:PrintWriter out =new OutputStream(),true);
客户端:BufferedReader line=new BufferedReader(new InputStreamReader(System.in));
服务器端:
3private ServerSocket ss; // 声明ServerSocket对象
4private Socket socket; // 声明Socket对象
5private BufferedReader in; // 声明输⼊流对象BufferedReader
6private PrintWriter out; // 声明输出流对象
7public Server()
8 {
9try
10 {
11// 创建⼀个ServerSocket,指定等待端⼝
12 ss = new ServerSocket(10000);
13while (true)
14 {
15// 使⽤ServerSocket接收⽤户请求(处于监听状态)
16 socket = ss.accept(); // 获得客户端的socket对象
17// 创建输⼊流并读取信息
18 in = new BufferedReader(new InputStreamReader(socket
19 .getInputStream()));
20 String line = in.readLine();
21 System.out.println("客户端说:" + line);
22// 创建输出流并输出信息
23 out = new OutputStream(), true);
24 out.print("您的信息已接收!");
25// 关闭流和socket
26 out.close();
27 in.close();
28 socket.close();
29 }
30 } catch (IOException e)
31 {
32 e.printStackTrace();
33 out.println("出错了!");
34 } // 创建ServerSocket对象
35 }
36public static void main(String[] args)
37 {// 程序主⼊⼝
38// 创建对象
39new Server();
40 }
41 }
客户端:(3分)
3 Socket socket; // 声明Socket对象
4 BufferedReader in; // 声明输⼊流对象
5 PrintWriter out; // 声明输出流对象
6public Client()
7 { // 构造⽅法
8try
9 {
10// 创建Socket对象,⽤来发送请求
11 socket = new LocalHost(), 10000);
12// 创建字符缓冲区对象
13 BufferedReader line = new BufferedReader(new InputStreamReader(
14 System.in));
15// 创建输出流对象并输出
16 out = new OutputStream(), true);
17 out.adLine());
18// 创建输⼊流对象
19 in = new BufferedReader(new InputStreamReader(socket
20 .getInputStream()));
21 System.out.adLine());
22// 关闭流对象
23 out.close();
24 in.close();
25 } catch (Exception e)
26 {
27 e.printStackTrace();
28 System.out.println("出错了!");
29 }
30 }
31public static void main(String[] args)
32 {
33// 创建对象
34new Client();
35 }
36 }
2. 使⽤基于UDP的Java Socket编程,完成功能:
1) 客户向咨询⼈员咨询。
2) 咨询⼈员给出回答。
3) 客户和咨询⼈员可以⼀直沟通,直到客户发送bye给咨询⼈员。
1/**
2 *
3 * 咨询⼈员
4 *
5*/
6public class AskServer
7{
8public static void main(String[] args)
9 {
10//创建DatagramSocket,发送接收数据都依赖他
11 DatagramSocket socket = null;
12try
13 {
14 socket = new DatagramSocket(8888);
15 Scanner input = new Scanner(System.in);
16while (true)
17 {
18//准备⼀个空的数据包,⽤来接收数据
19byte[] buf = new byte[1024];
20 DatagramPacket packet = new DatagramPacket(buf, buf.length); 21//接收数据使⽤空的数据包
22 ive(packet);
23//输出信息
24 String info = new Data(), 0, Length());
25 System.out.println("客户端请求:" + info);
26//判断是否退出
27if ("bye".equals(info))
28 {
29break;
30 }
31//发送数据
32 String result = Line();
33byte[] buf2 = Bytes();
34 DatagramPacket packet2 = new DatagramPacket(buf2, buf2.length,
35 Address(), Port());
36 socket.send(packet2);
37 }
38 } catch (SocketException e)
39 {
40 e.printStackTrace();
41 } catch (IOException e)
42 {
43 e.printStackTrace();
44 } finally
45 {
46//关闭socket
47 socket.close();
48 }
49 }
50 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论