Главная /
Построение распределенных систем на Java /
После выполнения какой строки сервер (класс BillingService) может принимать соединения клиентов: 1 package com.asw.net.ex1; 2 import java.net.*; 3 import java.util.Hashtable; 4 import java.io.*; 5 6 public class BillingService extends Thread{ 7 public sta
После выполнения какой строки сервер (класс BillingService
) может принимать соединения клиентов:
1 package com.asw.net.ex1;
2 import java.net.*;
3 import java.util.Hashtable;
4 import java.io.*;
5
6 public class BillingService extends Thread{
7 public static final int ADD_NEW_CARD = 1;
8 public static final int ADD_MONEY = 2;
9 public static final int SUB_MONEY = 3;
10 public static final int GET_CARD_BALANCE = 4;
11 public static final int EXIT_CLIENT = 5;
12
13 private int serverPort = 7896;
14 private ServerSocket ss;
15 private Hashtable hash;
16
17 public static void main(String[] args) {
18 BillingService bs = new BillingService();
19 bs.start();
20 }
21
22 public BillingService(){
23 hash = new Hashtable();
24 }
25
26 public void run(){
27 try {
28 ss = new ServerSocket(serverPort);
29 System.out.println("Server started");
30 while(true){
31 Socket s = ss.accept();
32 System.out.println("Client accepted");
33 BillingClientService bcs = new BillingClientService(this, new DataInputStream(s.getInputStream()), new DataOutputStream(s.getOutputStream()));
34 bcs.start();
35 }
36 } catch (IOException e) {
37 e.printStackTrace();
38 }
39 }
40
41 public void addNewCard(String personName, String card) {
42 hash.put(card, new Double(0.0));
43 }
44 public void addMoney(String card, double money) {
45 Double d = (Double)hash.get(card);
46 if (d!=null) hash.put(card,new Double(d.doubleValue()+money));
47 }
48 public void subMoney(String card, double money) {
49 Double d = (Double)hash.get(card);
50 if (d!=null) hash.put(card,new Double(d.doubleValue()-money));
51 }
52 public double getCardBalance(String card) {
53 Double d = (Double)hash.get(card);
54 if (d!=null) return d.doubleValue();
55 return 0;
56 }
57 }
вопрос
Правильный ответ:
18
23
28
Сложность вопроса
92
Сложность курса: Построение распределенных систем на Java
91
Оценить вопрос
Комментарии:
Аноним
спасибо за ответ
23 янв 2020
Аноним
Я сотрудник деканата! Тотчас заблокируйте сайт с ответами интуит. Это невозможно
21 дек 2016
Другие ответы на вопросы из темы интернет-технологии интуит.
- # Какие из следующих утверждений являются верными:
- # Класс BillingService унаследован от класса Thread, потому что:
- # Метод readObject, в строке 32 , в случае, если клиент после установки соединения не записал в поток никаких данных, приведет: 1 package com.asw.net.ex2; 2 import java.io.*; 3 import java.net.*; 4 5 public class BillingClientService extends Thread { 6 ObjectInputStream ois; 7 ObjectOutputStream oos; 8 BillingService bs; 9 Socket s; 10 11 public BillingClientService(BillingService bs,Socket s){ 12 System.out.println("Constructor BillingClientService\n"); 13 this.bs = bs; 14 this.s = s; 15 try { 16 this.oos = new ObjectOutputStream(s.getOutputStream()); 17 this.ois = new ObjectInputStream(s.getInputStream()); 18 } catch (IOException e) { 19 // TODO Auto-generated catch block 20 e.printStackTrace(); 21 } 22 23 System.out.println("Stream`s done \n socket="+s); 24 } 25 public void run(){ 26 System.out.println("ClientService thread started\n"); 27 boolean work = true; 28 while (work) { 29 int command; 30 Object o; 31 try { 32 o = ois.readObject(); 33 if (o instanceof Card[]) { 34 Card[] cards = (Card[])o; 35 for (int i=0;i<cards.length;i++){ 36 bs.addNewCard(cards[i]); 37 } 38 }else if (o instanceof CardOperation[]){ 39 CardOperation[] co = (CardOperation[])o; 40 for (int i=0;i<co.length;i++){ 41 bs.addMoney(co[i].card,co[i].amount); 42 } 43 }else if (o instanceof String){ 44 oos.writeObject(bs.getCard((String)o)); 45 }else System.out.println("Bad operation"); 46 47 } catch (IOException e) { 48 e.printStackTrace(); 49 } catch (ClassNotFoundException e) { 50 e.printStackTrace(); 51 } 52 } 53 } 54 }
- # Запуск приложения осуществляется в следующем порядке:
- # При использовании Dynamic Invocation Interface (DII) на стороне клиента, использование IDL для автоматического построения классов на стороне сервера: