Сокет работает только один раз - PullRequest
1 голос
/ 15 января 2012

Я пишу небольшую программу, которая проверяет интернет-магазин на наличие новых товаров в определенном отделе. Когда он обнаруживает, что новый элемент был добавлен, он должен отправить эту информацию простому IRC-боту, который, в свою очередь, записывает ее в канал, так что я сразу вижу ее.

Проблема в том, что IRC-часть работает только один раз. Таким образом, в то время как анализатор успешно объявляет каждый новый элемент в магазине на моей консоли, бот IRC показывает только первый элемент. Так что проблема, скорее всего, в моем коде сокета.

Я скажу вам, что я полный нуб с сокетами, так что это может быть очень простой проблемой (для вас).

Хватит говорить, вот соответствующий код:

Бот:

public void openSocket() throws IOException{

    serversock = new ServerSocket(1551);
    Socket sock = serversock.accept();

    BufferedReader incoming = new BufferedReader(new InputStreamReader(sock.getInputStream()));
    String inString = incoming.readLine();

    sendMessage("#channel", inString);
}

public static void main(String[] args) throws Exception {

    XanaduBot bot = new XanaduBot();
    bot.setVerbose(true);

    bot.connect("irc.server.net");
    bot.joinChannel("#channel");

    bot.openSocket();
}

И часть гнезда на скребке:

if(old == false){
    Socket client = new Socket("localhost",1551);
    DataOutputStream toBot = new DataOutputStream(client.getOutputStream());
    String infoToSend = "New product! "+ info;
    toBot.writeBytes(infoToSend + '\n');
    toBot.flush();

    System.out.println(infoToSend);
}

Переменная old имеет значение false, когда программа находит новый элемент. И я знаю, что исключения обрабатываются здесь довольно плохо, извините за это!

Любая помощь приветствуется!

...