套接字只能工作一次

时间:2012-01-15 15:17:10

标签: java sockets irc bots serversocket

我编写了一个小程序,用于检查在线商店中特定部门的新项目。当它确实发现添加了一个新项目时,它应该将该信息发送到一个简单的IRC-bot,然后将其写入一个频道,这样我就可以立即看到它。

问题是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。而且我知道异常处理得非常糟糕,对不起!

任何帮助表示赞赏!

0 个答案:

没有答案