Простой IRC клиент
самый простой IRC клиент работает в нём почти также удобно:))) как и сидеть в IRC используя telnet. Работа идёт по IRC протоколу, RFC которого находится здесь: ftp://ftp.irc.org/irc/docs/rfc1459.txt.
- для того чтобы зайти на канал, необходимо набрать join #chanel
- для отправки сообщения на канал privmsg #chanel :Vsjem privet
- для посылки сообщения в приват Privmsg name :Hi kak dela (не забудьте в начале послания ставить двоеточия)
- для получения всех возможных команд help
Надеюсь, кому-то это будет интересно, это может быть ваш первый шаг для создания нормального IRC клиента. Yаверно сама программа плохая, но я сделал всё, что мог, кто разбирается сделайте замечания и т.д и я их обязательно исправлю мой e-mail [email protected]
import java.net.*;
import java.io.*;
class Irc_sm{
static Socket socket;
static PrintWriter out;
public static void main (String [] args){
String server="irc.delfi.lv";
int port=6667;
String nick="Zs2";
String name="zs_name";
String host="zs_host";
try {
socket=new Socket(server,port);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println("NICK "+nick);
out.println("USER "+host+" \"...\" \"...\" "+name);
Producer p=new Producer (out);
Consumer c=new Consumer(in,server);
}catch (Exception e){System.out.println(e);}
try{
Thread.sleep(0);
}
catch (InterruptedException ie) {}
}
public static void send_string(String str){
out.println(str);
}
}
class Producer implements Runnable {
private PrintWriter out;
private Thread go;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Producer(PrintWriter out) {
this.out=out;
go = new Thread(this);
go.start();
}
public void run (){
Thread th=Thread.currentThread();
try{
while (true){
out.println(br.readLine());
}
}catch (Exception e){System.out.println(e);}
}
public void stop() {go = null; }
}
class Consumer implements Runnable{
BufferedReader in;
PrintWriter pw;
Thread go;
String server;
String str;
Consumer(BufferedReader in, String server) {
this.in=in;this.server=server;
go = new Thread(this);
go.start();
}
public void run (){
Thread th=Thread.currentThread();
try{
pw=new PrintWriter(new OutputStreamWriter(System.out,"Cp866"),true);
while (true){
str=in.readLine();
if(str.length()>5;){
if("PING ".equals(str.substring(0,5)))
Irc_sm.send_string("PONG "+server);
}
pw.println(str);
}
}catch (Exception e){System.out.println(e);}
}
public void stop()
{go = null;}
}