blob: 01863bc6bdbd515f3d2798df4214927874e1b9d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
package Client;
import java.io.*;
import java.net.Socket;
import Server.ChatServer;
import Server.Client;
public class ChatClient
{
private String nick;
private String realname;
private ChatClientWriter writer;
private UserInterface ui;
/** returning the nick name */
public String getNick ()
{
return this.nick;
}
/** returning the real name */
public String getRealname ()
{
return this.realname;
}
/** changing the nick name */
public void setNick (String nick)
{
this.nick = nick;
}
/** changing the real name */
public void setRealname (String realname)
{
this.realname = realname;
}
public void runSendline (String line)
{
writer.sendLine(line);
}
public void PRIVMSG (String line)
{
runSendline(line);
}
public boolean connect (String host, int port)
{
Socket soc;
try
{
soc = new Socket(host, port);
ChatClientReader reader = new ChatClientReader(soc);
reader.setDisplay(ui);
this.writer = new ChatClientWriter(soc,this);
reader.start();
writer.start();
return true;
} catch (IOException e)
{
System.err.println("Failed connecting to server: " + host + ":" + port + " (" + e + ")");
return false;
}
}
public static void main(String[] args) throws IOException
{
ChatClient client = new ChatClient();
client.setNick("dor");
client.setRealname("Dor bivas");
client.ui = new UserInterface(client);
//soc.close();
}
}
/** Tasks
* TODO: 2. When the user presses "send", a message will be sent to a channel:
* use PRIVMSG to channel #chat.
*
* TODO: 4. But we do want to allow sending commands to the channel. A
* message line that begins with the word "/QUOTE", will be sent as is
* (except the word "/QUOTE") to the server.
*
* TODO: 5. Join a channel at startup: For any server besides our own we need to send
* a JOIN command (see how it is handled in the server).
*
* TODO: 6. Don't allow sending text until we joined a channel.
*
* TODO: 7. When we get from the server a PRIVMSG, parse it and show who sent it.
* Print other messages (Server messages) differently.
*/
/** Later
*
* * Fix or remove all the fixme-s.
* * Closing the program (Close, ALT-F4) does not end the process
* * The output buffer does not have a scroll bar.
* * Pressing Enter in the message line does not send text.
* * It may be handy to implement other client commands:
* - /NICK - changes the nick
* - /CLEAR - clears the output window
* - /SAY - print a message directly to output window
* - // - sends just a leading '/' (in case you want to send '/NICK whatever' to the channel
* - /HELP - print a help message to the user
*/
|