Я пишу небольшую программу, которая проверяет интернет-магазин на наличие новых товаров в определенном отделе. Когда он обнаруживает, что новый элемент был добавлен, он должен отправить эту информацию простому 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, когда программа находит новый элемент. И я знаю, что исключения обрабатываются здесь довольно плохо, извините за это!
Любая помощь приветствуется!