// クライアントプログラム
import java.io.*;
import java.util.*;
import java.net.*;
import javax.swing.*;
class MessageWindow
extends JFrame { MessageWindow() {
super("Messages");
textArea.setEditable(false);
add(textArea);
pack();
setVisible(true);
}
public void printMessage
(String message
) { textArea.append(message+"\n");
}
}
public class ChatCl {
public static void main
(String[] args
) { byte[] buf = new byte[ChatParam.MSIZE];
byte[] send = new byte[ChatParam.MSIZE];
byte[] cbuf;
if (args.length < 2) {
System.
out.
println("引数: サーバ名 ユーザ名"); }
try {
/* サーバへの接続処理 */
System.
out.
println("[Input]----------------------------------");
MessageWindow mwin = new MessageWindow();
// 最初に参加要求(+ユーザ名)の送信
send[0] = ChatParam.JOIN;
cbuf = name.getBytes();
System.
arraycopy(cbuf,
0, send,
1,
(cbuf.
length < ChatParam.
NSIZE)?cbuf.
length:ChatParam.
NSIZE);
boolean flag = false;
// 以下は他の参加者からのメッセージを受信する部分ですが、現状は
// flagをfalseにして処理をスキップしています。
while (flag) {
// メッセージを受信して、bufの中に保存
switch (buf[0]) {
case ChatParam.LEAVE:
str
= new String(buf,
1, ChatParam.
MSIZE - 1); mwin.printMessage(str.substring(0, str.indexOf(0)));
break;
case ChatParam.FULL:
System.
out.
println("現在人数制限に達しています"); flag = false;
break;
case ChatParam.JOIN:
case ChatParam.MSG:
str
= new String(buf,
1, ChatParam.
MSIZE - 1); mwin.printMessage(str.substring(0, str.indexOf(0)));
}
}
// 以下の部分はメッセージを送信する部分で、他の参加者からのメッセージ
// を受信する部分とは並列にする必要があります。
while (true) {
send[0] = ChatParam.MSG;
str = name + ":" + input.readLine() + "\0";
mwin.printMessage(str);
cbuf = str.getBytes();
System.
arraycopy(cbuf,
0, send,
1,
(cbuf.
length < ChatParam.
MSIZE - 1)?cbuf.
length:(ChatParam.
MSIZE - 1));
/* send内のデータを送信 */
}
/* 通信終了処理 */
System.
out.
println("connection error"); }
}
}
Ly8g44Kv44Op44Kk44Ki44Oz44OI44OX44Ot44Kw44Op44OgCgppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGlsLio7CmltcG9ydCBqYXZhLm5ldC4qOwppbXBvcnQgamF2YXguc3dpbmcuKjsKCmNsYXNzIE1lc3NhZ2VXaW5kb3cgZXh0ZW5kcyBKRnJhbWUgewogIEpUZXh0QXJlYSB0ZXh0QXJlYTsKICBNZXNzYWdlV2luZG93KCkgewogICAgc3VwZXIoIk1lc3NhZ2VzIik7CiAgICB0ZXh0QXJlYSA9IG5ldyBKVGV4dEFyZWEoMjUsIDgwKTsKICAgIHRleHRBcmVhLnNldEVkaXRhYmxlKGZhbHNlKTsKICAgIGFkZCh0ZXh0QXJlYSk7CiAgICBwYWNrKCk7CiAgICBzZXRWaXNpYmxlKHRydWUpOwogIH0KCiAgcHVibGljIHZvaWQgcHJpbnRNZXNzYWdlKFN0cmluZyBtZXNzYWdlKSB7CiAgICB0ZXh0QXJlYS5hcHBlbmQobWVzc2FnZSsiXG4iKTsKICB9Cn0KCgpwdWJsaWMgY2xhc3MgQ2hhdENsIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICBieXRlW10gYnVmID0gbmV3IGJ5dGVbQ2hhdFBhcmFtLk1TSVpFXTsKICAgIGJ5dGVbXSBzZW5kID0gbmV3IGJ5dGVbQ2hhdFBhcmFtLk1TSVpFXTsKICAgIGJ5dGVbXSBjYnVmOwogICAgU3RyaW5nIHN0cjsKCiAgICBpZiAoYXJncy5sZW5ndGggPCAyKSB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigi5byV5pWwOiDjgrXjg7zjg5DlkI0g44Om44O844K25ZCNIik7CiAgICAgIFN5c3RlbS5leGl0KDEpOwogICAgfQoKICAgIHRyeSB7CiAgICAgIC8qIOOCteODvOODkOOBuOOBruaOpee2muWHpueQhiAqLwoKICAgICAgQnVmZmVyZWRSZWFkZXIgaW5wdXQgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICBTdHJpbmcgbmFtZSA9IGFyZ3NbMV07CgogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIltJbnB1dF0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CgogICAgICBNZXNzYWdlV2luZG93IG13aW4gPSBuZXcgTWVzc2FnZVdpbmRvdygpOwoKICAgICAgLy8g5pyA5Yid44Gr5Y+C5Yqg6KaB5rGCKCvjg6bjg7zjgrblkI0p44Gu6YCB5L+hCiAgICAgIHNlbmRbMF0gPSBDaGF0UGFyYW0uSk9JTjsKICAgICAgY2J1ZiA9IG5hbWUuZ2V0Qnl0ZXMoKTsKICAgICAgU3lzdGVtLmFycmF5Y29weShjYnVmLCAwLCBzZW5kLCAxLCAoY2J1Zi5sZW5ndGggPCBDaGF0UGFyYW0uTlNJWkUpP2NidWYubGVuZ3RoOkNoYXRQYXJhbS5OU0laRSk7CgoKICAgICAgYm9vbGVhbiBmbGFnID0gZmFsc2U7CiAgICAgIC8vIOS7peS4i+OBr+S7luOBruWPguWKoOiAheOBi+OCieOBruODoeODg+OCu+ODvOOCuOOCkuWPl+S/oeOBmeOCi+mDqOWIhuOBp+OBmeOBjOOAgeePvueKtuOBrwogICAgICAvLyBmbGFn44KSZmFsc2XjgavjgZfjgablh6bnkIbjgpLjgrnjgq3jg4Pjg5fjgZfjgabjgYTjgb7jgZnjgIIKICAgICAgd2hpbGUgKGZsYWcpIHsKCgkvLyDjg6Hjg4Pjgrvjg7zjgrjjgpLlj5fkv6HjgZfjgabjgIFidWbjga7kuK3jgavkv53lrZgKCglzd2l0Y2ggKGJ1ZlswXSkgewoJY2FzZSBDaGF0UGFyYW0uTEVBVkU6CgkgIHN0ciA9IG5ldyBTdHJpbmcoYnVmLCAxLCBDaGF0UGFyYW0uTVNJWkUgLSAxKTsKCSAgbXdpbi5wcmludE1lc3NhZ2Uoc3RyLnN1YnN0cmluZygwLCBzdHIuaW5kZXhPZigwKSkpOwoJICBicmVhazsKCWNhc2UgQ2hhdFBhcmFtLkZVTEw6CgkgIFN5c3RlbS5vdXQucHJpbnRsbigi54++5Zyo5Lq65pWw5Yi26ZmQ44Gr6YGU44GX44Gm44GE44G+44GZIik7CgkgIGZsYWcgPSBmYWxzZTsKCSAgYnJlYWs7CgljYXNlIENoYXRQYXJhbS5KT0lOOgoJY2FzZSBDaGF0UGFyYW0uTVNHOgoJICBzdHIgPSBuZXcgU3RyaW5nKGJ1ZiwgMSwgQ2hhdFBhcmFtLk1TSVpFIC0gMSk7CgkgIG13aW4ucHJpbnRNZXNzYWdlKHN0ci5zdWJzdHJpbmcoMCwgc3RyLmluZGV4T2YoMCkpKTsKCX0KICAgICAgfQoKICAgICAgLy8g5Lul5LiL44Gu6YOo5YiG44Gv44Oh44OD44K744O844K444KS6YCB5L+h44GZ44KL6YOo5YiG44Gn44CB5LuW44Gu5Y+C5Yqg6ICF44GL44KJ44Gu44Oh44OD44K744O844K4CiAgICAgIC8vIOOCkuWPl+S/oeOBmeOCi+mDqOWIhuOBqOOBr+S4puWIl+OBq+OBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAggogICAgICB3aGlsZSAodHJ1ZSkgewoJc2VuZFswXSA9IENoYXRQYXJhbS5NU0c7CglzdHIgPSBuYW1lICsgIjoiICsgaW5wdXQucmVhZExpbmUoKSArICJcMCI7Cgltd2luLnByaW50TWVzc2FnZShzdHIpOwoJY2J1ZiA9IHN0ci5nZXRCeXRlcygpOwoJU3lzdGVtLmFycmF5Y29weShjYnVmLCAwLCBzZW5kLCAxLCAoY2J1Zi5sZW5ndGggPCBDaGF0UGFyYW0uTVNJWkUgLSAxKT9jYnVmLmxlbmd0aDooQ2hhdFBhcmFtLk1TSVpFIC0gMSkpOwoKCS8qIHNlbmTlhoXjga7jg4fjg7zjgr/jgpLpgIHkv6EgKi8KICAgICAgfQoKICAgICAgLyog6YCa5L+h57WC5LqG5Yem55CGICovCgogICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjb25uZWN0aW9uIGVycm9yIik7CiAgICAgIFN5c3RlbS5leGl0KDEpOwogICAgfQogIH0KfQ==
Main.java:25: error: class ChatCl is public, should be declared in a file named ChatCl.java
public class ChatCl {
^
Main.java:27: error: cannot find symbol
byte[] buf = new byte[ChatParam.MSIZE];
^
symbol: variable ChatParam
location: class ChatCl
Main.java:28: error: cannot find symbol
byte[] send = new byte[ChatParam.MSIZE];
^
symbol: variable ChatParam
location: class ChatCl
Main.java:48: error: cannot find symbol
send[0] = ChatParam.JOIN;
^
symbol: variable ChatParam
location: class ChatCl
Main.java:50: error: cannot find symbol
System.arraycopy(cbuf, 0, send, 1, (cbuf.length < ChatParam.NSIZE)?cbuf.length:ChatParam.NSIZE);
^
symbol: variable ChatParam
location: class ChatCl
Main.java:50: error: cannot find symbol
System.arraycopy(cbuf, 0, send, 1, (cbuf.length < ChatParam.NSIZE)?cbuf.length:ChatParam.NSIZE);
^
symbol: variable ChatParam
location: class ChatCl
Main.java:61: error: cannot find symbol
case ChatParam.LEAVE:
^
symbol: variable ChatParam
location: class ChatCl
Main.java:62: error: cannot find symbol
str = new String(buf, 1, ChatParam.MSIZE - 1);
^
symbol: variable ChatParam
location: class ChatCl
Main.java:65: error: cannot find symbol
case ChatParam.FULL:
^
symbol: variable ChatParam
location: class ChatCl
Main.java:69: error: cannot find symbol
case ChatParam.JOIN:
^
symbol: variable ChatParam
location: class ChatCl
Main.java:70: error: cannot find symbol
case ChatParam.MSG:
^
symbol: variable ChatParam
location: class ChatCl
Main.java:71: error: cannot find symbol
str = new String(buf, 1, ChatParam.MSIZE - 1);
^
symbol: variable ChatParam
location: class ChatCl
Main.java:79: error: cannot find symbol
send[0] = ChatParam.MSG;
^
symbol: variable ChatParam
location: class ChatCl
Main.java:83: error: cannot find symbol
System.arraycopy(cbuf, 0, send, 1, (cbuf.length < ChatParam.MSIZE - 1)?cbuf.length:(ChatParam.MSIZE - 1));
^
symbol: variable ChatParam
location: class ChatCl
Main.java:83: error: cannot find symbol
System.arraycopy(cbuf, 0, send, 1, (cbuf.length < ChatParam.MSIZE - 1)?cbuf.length:(ChatParam.MSIZE - 1));
^
symbol: variable ChatParam
location: class ChatCl
15 errors