Java 我如何才能开发一个;xdcc send";在爪哇?

Java 我如何才能开发一个;xdcc send";在爪哇?,java,irc,Java,Irc,我发现这段代码与IRC服务器通信(见下文)。但是,我没有找到如何在xdcc中发送下载或上载命令 一旦连接到IRC服务器并定位在通道中。我想发出一个类似的命令 /msg bot_name xdcc send#u文件的编号 提前感谢您的回答、示例和帮助 import java.io.*; import java.net.*; public class HackBot { public static void main(String[] args) throws Exception {

我发现这段代码与IRC服务器通信(见下文)。但是,我没有找到如何在xdcc中发送下载或上载命令

一旦连接到IRC服务器并定位在通道中。我想发出一个类似的命令

/msg bot_name xdcc send#u文件的编号

提前感谢您的回答、示例和帮助

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

public class HackBot {

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

        // The server to connect to and our details.
        String server = "irc.freenode.net";
        String nick = "simple_bot";
        String login = "simple_bot";

        // The channel which the bot will join.
        String channel = "#irchacks";

        // Connect directly to the IRC server.
        Socket socket = new Socket(server, 6667);
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(socket.getOutputStream( )));
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(socket.getInputStream( )));

        // Log on to the server.
        writer.write("NICK " + nick + "\r\n");
        writer.write("USER " + login + " 8 * : Java IRC Hacks Bot\r\n");
        writer.flush( );

        // Read lines from the server until it tells us we have connected.
        String line = null;
        while ((line = reader.readLine( )) != null) {
            if (line.indexOf("004") >= 0) {
                // We are now logged in.
                break;
            }
            else if (line.indexOf("433") >= 0) {
                System.out.println("Nickname is already in use.");
                return;
            }
        }

        // Join the channel.
        writer.write("JOIN " + channel + "\r\n");
        writer.flush( );

        // Keep reading lines from the server.
        while ((line = reader.readLine( )) != null) {
            if (line.toUpperCase( ).startsWith("PING ")) {
                // We must respond to PINGs to avoid being disconnected.
                writer.write("PONG " + line.substring(5) + "\r\n");
                writer.write("PRIVMSG " + channel + " :I got pinged!\r\n");
                writer.flush( );
            }
            else {
                // Print the raw line received by the bot.
                System.out.println(line);
            }
        }
    }

}

您的代码只显示了打开与IRC服务器的连接并保持连接所需的最低要求,实际上整个IRC协议要复杂得多,并且没有在代码中实现

xdcc send
只是一个普通的IRC消息,它被私下发送给IRC服务器的特定其他用户(通常是bot),因此您可以使用命令
privmg
发送它:

writer.write("PRIVMSG " + botNickName + " :xdcc send #" + numberOfPack + "\r\n");
其中,
botNickName
numberOfPack
是两个字符串变量,包含bot的昵称(即消息的接收者)和您感兴趣的包的编号(字符串格式)

<>但是,你必须考虑到DCC是一个完全不同于IRC协议本身的协议:它使用IRC上的<代码> CTCP < /Cult>消息:

DCC SEND <filename> <ip> <port>
DCC发送

仅启动DCC会话,然后使用DCC协议来管理客户端到客户端的通信。因此,如果您真的想让DCC工作,您也应该实现它,但这不是一项快速的工作。

谢谢您的帮助。这是可行的,但正如你所说,我不能只通过IRC协议下载或上传文件。现在我看看Java库PircBot,它通过DCC发送或接收文件。