- Kā Uztaisīt Čatiņu Javā Pašam Ar Sevi
- 10/10/08 11:23 am
- Šorīt strādāt negribējās, bet sēdēt un neko nedarīt, это не наш метод. Uzbliezu sīku цоммандлинес čatiņu, lai atcerētos, par tiem Readeriem un Socketiem. Patērētais laiks (kopā ar to javas koda izkrāsotāja meklēšanu un muļķīgu koda stumdīšanu un klabes publicēšanu) — 2h. Rīki — Notepad++, cmd.exe, Skudra, JSDK 1.4 un jamo dokumentācija HTML formātā caur Firefox 2.kautkas skatīta.
Zandi, ņemsi mani par javistu?
Upd. @11:41 Zurce ir lejuplādējama arī!
Upd. #2 @11:44 javadocus neuzrakstīju, OMG, OMG, panic panic
001 package purvainais;
002
003 import java.util.logging.*;
004 import java.io.*;
005 import java.net.*;
006
007 public class Chat {
008 private static Logger log = Logger.getAnonymousLogger();
009
010 public Chat() {
011 }
012
013 public void start() {
014 log.setLevel(Level.OFF); // need no logging output, lol
015
016 log.info("Hai, es esmu chatins!");
017
018 try {
019 Socket socket = null;
020 try {
021 ServerSocket serverSocket = new ServerSocket(7777);
022
023 log.info("I will act as a server");
024 socket = serverSocket.accept();
025
026
027 } catch (IOException ioe) {
028 if (ioe.getMessage().indexOf("Address already in use") != -1) {
029
030 log.info("I will act as a client");
031 socket = new Socket("localhost", 7777);
032
033 } else {
034 throw ioe;
035 }
036 }
037
038 Thread rt = new ReaderThread(socket.getInputStream());
039 rt.start();
040
041 Thread wt = new WriterThread(socket.getOutputStream());
042 wt.start();
043
044 } catch (IOException e) {
045 log.severe(e.getMessage());
046 }
047
048
049 };
050
051 public static void main(String[] arguments) {
052 (new Chat()).start();
053 }
054
055
056 private class ReaderThread extends Thread {
057 String s;
058 BufferedReader reader;
059
060 ReaderThread(InputStream is) {
061 super();
062 reader = new BufferedReader(
063 new InputStreamReader( is ));
064 }
065
066 public void run() {
067 try {
068 while ( ( s = reader.readLine() ) != null ) {
069 log.info("received message: " + s);
070 System.out.println("he said:" + s);
071 }
072 } catch (IOException ioe) {
073 log.severe(ioe.getMessage());
074 }
075 }
076 };
077
078
079 private class WriterThread extends Thread {
080 String s;
081 BufferedWriter writer;
082 BufferedReader reader;
083
084 WriterThread(OutputStream os) {
085 super();
086 writer = new BufferedWriter(
087 new OutputStreamWriter( os ));
088
089 reader = new BufferedReader(
090 new InputStreamReader( System.in ));
091 }
092
093 public void run() {
094 try {
095 while ( ( s = reader.readLine() ) != null ) {
096 log.info("will send message: " + s);
097 writer.write(s);
098 writer.newLine();
099 writer.flush();
100 }
101 } catch (IOException ioe) {
102 log.severe(ioe.getMessage());
103 }
104 }
105 };
106 }Java2html - 1 commentLeave a comment