Package org.schwering.irc.lib
Class IRCConnection
- java.lang.Object
-
- java.lang.Thread
-
- org.schwering.irc.lib.IRCConnection
-
- All Implemented Interfaces:
java.lang.Runnable
- Direct Known Subclasses:
SSLIRCConnection,SSLIRCConnection
public class IRCConnection extends java.lang.ThreadCreates a new connection to an IRC server. It's the main class of the IRClib, the point everything starts.The following sample code tries to establish an IRC connection to an IRC server:
/* * The following code of a class which imports org.schwering.irc.lib.* * prepares an IRC connection and then tries to establish the connection. * The server is "irc.somenetwork.com", the default portrange (6667 and * 6669) is set, no password is used (null). The nickname is "Foo" and * the realname is "Mr. Foobar". The username "foobar". * Because of setDaemon(true), the JVM exits even if this thread is * running. * An instance of the class MyListener which must implement * IRCActionListener is added as only event-listener for the connection. * The connection is told to parse out mIRC color codes and to enable * automatic PING? PONG! replies. */ IRCConnection conn = new IRCConnection( "irc.somenetwork.com", 6667, 6669, null, "Foo", "Mr. Foobar", "foo@bar.com" ); conn.addIRCEventListener(new MyListener()); conn.setDaemon(true); conn.setColors(false); conn.setPong(true); try { conn.connect(); // Try to connect!!! Don't forget this!!! } catch (IOException ioexc) { ioexc.printStackTrace(); }
The serverpassword isn't needed in most cases. You can give
nullor""instead as done in this example.- See Also:
IRCEventListener,IRCParser,IRCUtil,SSLIRCConnection
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringencodingTheStringcontains the name of the character encoding used to talk to the server.protected java.lang.StringhostThe host of the IRC server.protected bytelevelThis is like a UNIX-runlevel.protected int[]portsTheint[]contains all ports to which we are going to try to connect.
-
Constructor Summary
Constructors Constructor Description IRCConnection(java.lang.String host, int[] ports, java.lang.String pass, java.lang.String nick, java.lang.String username, java.lang.String realname)Creates a new IRC connection.IRCConnection(java.lang.String host, int portMin, int portMax, java.lang.String pass, java.lang.String nick, java.lang.String username, java.lang.String realname)Creates a new IRC connection.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddIRCEventListener(IRCEventListener l)Adds a newIRCEventListenerwhich listens for actions coming from the IRC server.voidclose()Close down the connection brutally.voidconnect()Establish a connection to the server.voiddoAway()Removes away message.voiddoAway(java.lang.String msg)Sets away message.voiddoInvite(java.lang.String nick, java.lang.String chan)Invites a user to a channel.voiddoIson(java.lang.String nick)Checks if one or more nicks are used on the server.voiddoJoin(java.lang.String chan)Joins a channel without a key.voiddoJoin(java.lang.String chan, java.lang.String key)Joins a channel with a key.voiddoKick(java.lang.String chan, java.lang.String nick)Kicks a user from a channel.voiddoKick(java.lang.String chan, java.lang.String nick, java.lang.String msg)Kicks a user from a channel with a comment.voiddoList()Lists all channels with their topic and status.voiddoList(java.lang.String chan)Lists channel(s) with their topic and status.voiddoMode(java.lang.String chan)Requests a Reply 324 for the modes of a given channel.voiddoMode(java.lang.String target, java.lang.String mode)Sends a mode to the server.voiddoNames()Lists all visible users.voiddoNames(java.lang.String chan)Lists all visible users of (a) channel(s).voiddoNick(java.lang.String nick)Changes the nickname.voiddoNotice(java.lang.String target, java.lang.String msg)Notices a message to a person or a channel.voiddoPart(java.lang.String chan)Parts from a given channel.voiddoPart(java.lang.String chan, java.lang.String msg)Parts from a given channel with a given parg-msg.voiddoPong(java.lang.String ping)Quits from the IRC server with a quit-msg.voiddoPrivmsg(java.lang.String target, java.lang.String msg)Sends a message to a person or a channel.voiddoQuit()Quits from the IRC server.voiddoQuit(java.lang.String msg)Quits from the IRC server with a quit-msg.voiddoTopic(java.lang.String chan)Requests the topic of a chan.voiddoTopic(java.lang.String chan, java.lang.String topic)Changes the topic of a chan.voiddoUserhost(java.lang.String nick)Requires host-information about up to 5 users which must be listed and divided by spaces.voiddoWho(java.lang.String criteric)Requests information about users matching the given criteric, for example a channel they are on.voiddoWhois(java.lang.String nick)Requires information about an existing user.voiddoWhowas(java.lang.String nick)Requires host-information about a user, who is not connected anymore.booleangetColors()Indicates whether colors are stripped out or not.java.lang.StringgetEncoding()Returns the encoding of the socket.java.lang.StringgetHost()Returns the server of this instance.java.lang.StringgetNick()Returns the nickname of this instance.java.lang.StringgetPassword()Returns the password of this instance.booleangetPong()Indicates whether automatic PING? PONG! is enabled or not.intgetPort()Returns the port to which theIRCConnectionconnected, or0if the connection failed or wasn't tried yet.int[]getPorts()Returns all ports to which theIRCConnectionis going to try or has tried to connect to.java.lang.StringgetRealname()Returns the realname of this instance.intgetTimeout()Returns the timeout of the socket.java.lang.StringgetUsername()Returns the username of this instance.booleanisConnected()Tells whether there's a connection to the IRC network or not.protected voidprepare(java.net.Socket s)Invoked by theconnectmethod, this method prepares the connection.booleanremoveIRCEventListener(IRCEventListener l)Removes the first occurence of the givenIRCEventListenerfrom the listener-vector.voidrun()TheThreadis started by theconnectmethod.voidsend(java.lang.String line)Sends a String to the server.voidsetColors(boolean colors)Enables or disables the mIRC colorcodes.voidsetEncoding(java.lang.String encoding)Changes the character encoding used to talk to the server.voidsetPong(boolean pong)Enables or disables the automatic PING? PONG! support.voidsetTimeout(int millis)Sets the connection's timeout in milliseconds.java.lang.StringtoString()Generates aStringwith some information about the instance ofIRCConnection.-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, yield
-
-
-
-
Field Detail
-
level
protected byte level
This is like a UNIX-runlevel. Its value indicates the level of theIRCConnectionobject.0means that the object has not yet been connected,1means that it's connected but not registered,2means that it's connected and registered but still waiting to receive the nickname the first time,3means that it's connected and registered, and-1means that it was connected but is disconnected. Therefore the defaultvalue is0.
-
host
protected java.lang.String host
The host of the IRC server.
-
ports
protected int[] ports
Theint[]contains all ports to which we are going to try to connect. This can be a portrange from port 6667 to 6669, for example.
-
encoding
protected java.lang.String encoding
TheStringcontains the name of the character encoding used to talk to the server. This can be ISO-8859-1 or UTF-8 for example. The default is ISO-8859-1.
-
-
Constructor Detail
-
IRCConnection
public IRCConnection(java.lang.String host, int[] ports, java.lang.String pass, java.lang.String nick, java.lang.String username, java.lang.String realname)Creates a new IRC connection.
The difference to the other constructor is, that it transmits the ports in anint[]. Thus, also ports like 1024, 2048, 6667 and 6669 can be selected.
The constructor prepares a new IRC connection which can be really started by invoking theconnectmethod. Before invoking it, you should set theIRCEventListenerand other settings.
Note that you do not need to set a password to connect to the large public IRC networks like QuakeNet, EFNet etc. To use no password in your IRC connection, use""ornullfor the password argument in the constructor.- Parameters:
host- The hostname of the server we want to connect to.ports- The portrange to which we want to connect.pass- The password of the IRC server. If your server isn't secured by a password (that's normal), usenullor"".nick- The nickname for the connection. Is used to register the connection.username- The username. Is used to register the connection.realname- The realname. Is used to register the connection.- Throws:
java.lang.IllegalArgumentException- If thehostorportsisnullorports' length is0.- See Also:
connect()
-
IRCConnection
public IRCConnection(java.lang.String host, int portMin, int portMax, java.lang.String pass, java.lang.String nick, java.lang.String username, java.lang.String realname)Creates a new IRC connection.
The difference to the other constructor is, that it transmits the ports as twoints. Thus, only a portrange from portxto portylike from port 6667 to 6669 can be selected.
The constructor prepares a new IRC connection which can be really started by invoking theconnectmethod. Before invoking it, you should set theIRCEventListenerand other settings.
Note that you do not need to set a password to connect to the large public IRC networks like QuakeNet, EFNet etc. To use no password in your IRC connection, use""ornullfor the password argument in the constructor.- Parameters:
host- The hostname of the server we want to connect to.portMin- The beginning of the port range we are going to connect to.portMax- The ending of the port range we are going to connect to.pass- The password of the IRC server. If your server isn't secured by a password (that's normal), usenullor"".nick- The nickname for the connection. Is used to register the connection.username- The username. Is used to register the connection.realname- The realname. Is used to register the connection.- Throws:
java.lang.IllegalArgumentException- If thehostisnull.- See Also:
connect()
-
-
Method Detail
-
connect
public void connect() throws java.io.IOExceptionEstablish a connection to the server.
This method must be invoked to start a connection; the constructor doesn't do that!
It tries all set ports until one is open. If all ports fail it throws anIOException.
You can invokeconnectonly one time.- Throws:
java.io.IOException- If an I/O error occurs.java.net.SocketException- If theconnectmethod was already invoked.- See Also:
isConnected(),doQuit(),doQuit(String),close()
-
prepare
protected void prepare(java.net.Socket s) throws java.io.IOExceptionInvoked by theconnectmethod, this method prepares the connection.
It initializes the class-vars for the inputstream and the outputstream of the socket, starts the registration of at the IRC server by callingregister()and starts the receiving of lines from the server by starting the thread with thestartmethod.
This method must be protected, because it is used by extending classes, which override theconnectmethod.
-
run
public void run()
TheThreadis started by theconnectmethod. It's task is to receive strings from the IRC server and hand them over to thegetmethod.- Specified by:
runin interfacejava.lang.Runnable- Overrides:
runin classjava.lang.Thread
-
send
public void send(java.lang.String line)
Sends a String to the server. You should use this method only, if you must do it. For most purposes, there aredo*methods (likedoJoin). A carriage return line feed (\r\n) is appended automatically.- Parameters:
line- The line which should be send to the server without the trailing carriage return line feed (\r\n).
-
close
public void close()
Close down the connection brutally.
It does *NOT* send the proper IRC commandQUIT. You should always use thedoQuitmethods orsend("QUIT")instead of this method.
You should use this method to close down the connection only when the IRC server doesn't react to theQUITcommand.- See Also:
connect(),doQuit(),doQuit(String)
-
addIRCEventListener
public void addIRCEventListener(IRCEventListener l)
Adds a newIRCEventListenerwhich listens for actions coming from the IRC server.- Parameters:
l- An instance of theIRCEventListenerinterface.- Throws:
java.lang.IllegalArgumentException- Iflistenerisnull.
-
removeIRCEventListener
public boolean removeIRCEventListener(IRCEventListener l)
Removes the first occurence of the givenIRCEventListenerfrom the listener-vector.- Parameters:
l- An instance of theIRCEventListenerinterface.- Returns:
trueif the listener was successfully removed;falseif it was not found.
-
setColors
public void setColors(boolean colors)
Enables or disables the mIRC colorcodes.- Parameters:
colors-trueto enable,falseto disable colors.
-
setPong
public void setPong(boolean pong)
Enables or disables the automatic PING? PONG! support.- Parameters:
pong-trueto enable automaticPONGreply,falsemakes the class fireonPingevents.
-
setEncoding
public void setEncoding(java.lang.String encoding)
Changes the character encoding used to talk to the server. This can be ISO-8859-1 or UTF-8 for example. This property must be set before a call to theconnect()method.- Parameters:
encoding-
-
setTimeout
public void setTimeout(int millis)
Sets the connection's timeout in milliseconds.
The default is1000 * 60 15millis which are 15 minutes.
-
isConnected
public boolean isConnected()
Tells whether there's a connection to the IRC network or not.
Ifconnectwasn't called yet, it returnsfalse.- Returns:
- The status of the connection;
trueif it's connected. - See Also:
connect(),doQuit(),doQuit(String),close()
-
getNick
public java.lang.String getNick()
Returns the nickname of this instance.- Returns:
- The nickname.
-
getRealname
public java.lang.String getRealname()
Returns the realname of this instance.- Returns:
- The realname.
-
getUsername
public java.lang.String getUsername()
Returns the username of this instance.- Returns:
- The username.
-
getHost
public java.lang.String getHost()
Returns the server of this instance.- Returns:
- The server's hostname.
-
getPassword
public java.lang.String getPassword()
Returns the password of this instance. If no password is set,nullis returned.- Returns:
- The password. If no password is set,
nullis returned.
-
getPorts
public int[] getPorts()
Returns all ports to which theIRCConnectionis going to try or has tried to connect to.- Returns:
- The ports in an
int[]array.
-
getPort
public int getPort()
Returns the port to which theIRCConnectionconnected, or0if the connection failed or wasn't tried yet.- Returns:
- The port to which the
IRCConnection, or0if the connection failed or wasn't tried yet.
-
getColors
public boolean getColors()
Indicates whether colors are stripped out or not.- Returns:
trueif colors are disabled.
-
getPong
public boolean getPong()
Indicates whether automatic PING? PONG! is enabled or not.- Returns:
trueif PING? PONG! is done automatically.
-
getEncoding
public java.lang.String getEncoding()
Returns the encoding of the socket.- Returns:
- The socket's encoding.
-
getTimeout
public int getTimeout()
Returns the timeout of the socket.
If an error occurs, which is never the case,-1is returned.- Returns:
- The timeout.
-
toString
public java.lang.String toString()
Generates aStringwith some information about the instance ofIRCConnection. Its format is:classname[host,portMin,portMax,username,nick,realname,pass,connected].- Overrides:
toStringin classjava.lang.Thread- Returns:
- A
Stringwith information about the instance.
-
doAway
public void doAway()
Removes away message.
-
doAway
public void doAway(java.lang.String msg)
Sets away message.- Parameters:
msg- The away message.
-
doInvite
public void doInvite(java.lang.String nick, java.lang.String chan)Invites a user to a channel.- Parameters:
nick- The nickname of the user who should be invited.chan- The channel the user should be invited to.
-
doIson
public void doIson(java.lang.String nick)
Checks if one or more nicks are used on the server.- Parameters:
nick- The nickname of the user we search for.
-
doJoin
public void doJoin(java.lang.String chan)
Joins a channel without a key.- Parameters:
chan- The channel which is to join.
-
doJoin
public void doJoin(java.lang.String chan, java.lang.String key)Joins a channel with a key.- Parameters:
chan- The channel which is to join.key- The key of the channel.
-
doKick
public void doKick(java.lang.String chan, java.lang.String nick)Kicks a user from a channel.- Parameters:
chan- The channel somebody should be kicked from.nick- The nickname of the user who should be kicked.
-
doKick
public void doKick(java.lang.String chan, java.lang.String nick, java.lang.String msg)Kicks a user from a channel with a comment.- Parameters:
chan- The channel somebody should be kicked from.nick- The nickname of the user who should be kicked.msg- The optional kickmessage.
-
doList
public void doList()
Lists all channels with their topic and status.
-
doList
public void doList(java.lang.String chan)
Lists channel(s) with their topic and status.- Parameters:
chan- The channel theLISTrefers to.
-
doNames
public void doNames()
Lists all visible users.
-
doNames
public void doNames(java.lang.String chan)
Lists all visible users of (a) channel(s).- Parameters:
chan- The channel theNAMEScommand is refering to.
-
doPrivmsg
public void doPrivmsg(java.lang.String target, java.lang.String msg)Sends a message to a person or a channel.- Parameters:
target- The nickname or channel the message should be sent to.msg- The message which should be transmitted.
-
doMode
public void doMode(java.lang.String chan)
Requests a Reply 324 for the modes of a given channel.- Parameters:
chan- The channel theMODErequest is refering to.
-
doMode
public void doMode(java.lang.String target, java.lang.String mode)Sends a mode to the server.
The first argument is a nickname (user-mode) or a channel (channel-mode).String modemust contain the operators (+/-), the modes (o/v/i/k/l/p/s/w) and the possibly values (nicks/banmask/limit/key).- Parameters:
target- The nickname or channel of the user whose modes will be changed.mode- The new modes.
-
doNick
public void doNick(java.lang.String nick)
Changes the nickname.- Parameters:
nick- The new nickname.
-
doNotice
public void doNotice(java.lang.String target, java.lang.String msg)Notices a message to a person or a channel.- Parameters:
target- The nickname or channel (group) the message should be sent to.msg- The message which should be transmitted.
-
doPart
public void doPart(java.lang.String chan)
Parts from a given channel.- Parameters:
chan- The channel you want to part from.
-
doPart
public void doPart(java.lang.String chan, java.lang.String msg)Parts from a given channel with a given parg-msg.- Parameters:
chan- The channel you want to part from.msg- The optional partmessage.
-
doPong
public void doPong(java.lang.String ping)
Quits from the IRC server with a quit-msg.- Parameters:
ping- The ping which was received inonPing. It's aString, because sometimes on some networks the server-hostname (for example splatterworld.quakenet.org) is given as parameter which would throw an Exception if we gave the ping as long.
-
doQuit
public void doQuit()
Quits from the IRC server. Calls thedisconnect-method which does the work actually.- See Also:
isConnected(),connect(),doQuit(String),close()
-
doQuit
public void doQuit(java.lang.String msg)
Quits from the IRC server with a quit-msg. Calls thedisconnect-method which does the work actually.- Parameters:
msg- The optional quitmessage.- See Also:
isConnected(),connect(),doQuit(),close()
-
doTopic
public void doTopic(java.lang.String chan)
Requests the topic of a chan. The topic is given in a numeric reply.- Parameters:
chan- The channel which topic should be requested.
-
doTopic
public void doTopic(java.lang.String chan, java.lang.String topic)Changes the topic of a chan.- Parameters:
chan- The channel which topic is changed.topic- The new topic.
-
doWho
public void doWho(java.lang.String criteric)
Requests information about users matching the given criteric, for example a channel they are on.- Parameters:
criteric- The criterics of theWHOquery.
-
doWhois
public void doWhois(java.lang.String nick)
Requires information about an existing user.- Parameters:
nick- The nickname of the user the query is refering to.
-
doWhowas
public void doWhowas(java.lang.String nick)
Requires host-information about a user, who is not connected anymore.- Parameters:
nick- The nickname of the user the query is refering to.
-
doUserhost
public void doUserhost(java.lang.String nick)
Requires host-information about up to 5 users which must be listed and divided by spaces.- Parameters:
nick- The nickname of the user the query is refering to.
-
-