Помогите мне исправить ошибку в этом примере темы - PullRequest
2 голосов
/ 12 февраля 2011

Я пытаюсь создать тему, чтобы просто отправить текст клиенту. Однако, если вы скопируете этот код в IDE, вы увидите, что под client.getOutputStream () есть красное подчеркивание Я не знаю, что здесь не так. В среде IDE указано «Необработанное исключение типа IOException». Кто-нибудь может мне сказать?

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class ServerStudentThread extends Thread {
  Socket client; 

  public ServerStudentThread(Socket x) {  
    client = x;  
  }

  public void run() {
    // create object to send information to client
    PrintWriter out = new  PrintWriter(client.getOutputStream(),true);

    out.println("Student name: ");//send text to client;
  }
}

Для справки вот код, вызывающий поток.

import java.io.*;
import java.net.*;
import java.util.*;

public class Server2 {
  public static void main(String args[]) throws Exception {
    int PORT = 5555;      // Open port 5555

    //open socket to listen
    ServerSocket server = new ServerSocket(PORT);
    Socket client = null;

    while (true) {
      System.out.println("Waiting for client...");

      // open client socket to accept connection
      client = server.accept();

      System.out.println(client.getInetAddress()+" contacted ");
      System.out.println("Creating thread to serve request");

      ServerStudentThread student = new ServerStudentThread(client);
      student.start();
    }
  }
}

Ответы [ 4 ]

3 голосов
/ 12 февраля 2011

Вероятно, getOutputStream () может выдать исключение, а вы его не перехватываете, попробуйте поместить try / catch (IOException e) вокруг блока кода.

public void run() {
    try {
        // create object to send information to client    
        PrintWriter out = new  PrintWriter(client.getOutputStream(),true);
        out.println("Student name: ");//send text to client;
    } catch (IOException e) {
       throw new RuntimeException("It all went horribly wrong!", e);
    }
}
1 голос
/ 12 февраля 2011

Так что вам нужно добавить блок try / catch для обработки исключения ввода-вывода.

Прочтите раздел Исключения из руководства по Java.

0 голосов
/ 12 февраля 2011

Kalla,

Вам нужно либо поставить строку между блоком try / catch, либо объявить run для выброса IOException

0 голосов
/ 12 февраля 2011

Из Javadoc :

public OutputStream getOutputStream () генерирует IOException

IOException является проверенным исключением. Вам нужно использовать блок try / catch, чтобы справиться с этой возможностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...