// クライアントプログラム
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"); }
}
}
Ly8g44Kv44Op44Kk44Ki44Oz44OI44OX44Ot44Kw44Op44OgCiAKaW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5uZXQuKjsKaW1wb3J0IGphdmF4LnN3aW5nLio7CiAKY2xhc3MgTWVzc2FnZVdpbmRvdyBleHRlbmRzIEpGcmFtZSB7CglKVGV4dEFyZWEgdGV4dEFyZWE7CglNZXNzYWdlV2luZG93KCkgewoJCXN1cGVyKCJNZXNzYWdlcyIpOwoJCXRleHRBcmVhID0gbmV3IEpUZXh0QXJlYSgyNSwgODApOwoJCXRleHRBcmVhLnNldEVkaXRhYmxlKGZhbHNlKTsKCQlhZGQodGV4dEFyZWEpOwoJCXBhY2soKTsKCQlzZXRWaXNpYmxlKHRydWUpOwoJfQoJCglwdWJsaWMgdm9pZCBwcmludE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpIHsKCQl0ZXh0QXJlYS5hcHBlbmQobWVzc2FnZSsiXG4iKTsKCX0KfQogCiAKcHVibGljIGNsYXNzIENoYXRDbCB7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkgICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlW0NoYXRQYXJhbS5NU0laRV07CgkgICAgYnl0ZVtdIHNlbmQgPSBuZXcgYnl0ZVtDaGF0UGFyYW0uTVNJWkVdOwoJICAgIGJ5dGVbXSBjYnVmOwoJICAgIFN0cmluZyBzdHI7CgkgCgkgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMikgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIuW8leaVsDog44K144O844OQ5ZCNIOODpuODvOOCtuWQjSIpOwoJCQlTeXN0ZW0uZXhpdCgxKTsKCSAgICB9CgkgCgkgICAgdHJ5IHsKCQkJLyog44K144O844OQ44G444Gu5o6l57aa5Yem55CGICovCgkJCQoJCQlCdWZmZXJlZFJlYWRlciBpbnB1dCA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CgkJCVN0cmluZyBuYW1lID0gYXJnc1sxXTsKCQkJCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiW0lucHV0XS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKCQkJCgkJCU1lc3NhZ2VXaW5kb3cgbXdpbiA9IG5ldyBNZXNzYWdlV2luZG93KCk7CgkJCQoJCQkvLyDmnIDliJ3jgavlj4LliqDopoHmsYIoK+ODpuODvOOCtuWQjSnjga7pgIHkv6EKCQkJc2VuZFswXSA9IENoYXRQYXJhbS5KT0lOOwoJCQljYnVmID0gbmFtZS5nZXRCeXRlcygpOwoJCQlTeXN0ZW0uYXJyYXljb3B5KGNidWYsIDAsIHNlbmQsIDEsIChjYnVmLmxlbmd0aCA8IENoYXRQYXJhbS5OU0laRSk/Y2J1Zi5sZW5ndGg6Q2hhdFBhcmFtLk5TSVpFKTsKCQkJCgkJCQoJCQlib29sZWFuIGZsYWcgPSBmYWxzZTsKCQkJLy8g5Lul5LiL44Gv5LuW44Gu5Y+C5Yqg6ICF44GL44KJ44Gu44Oh44OD44K744O844K444KS5Y+X5L+h44GZ44KL6YOo5YiG44Gn44GZ44GM44CB54++54q244GvCgkJCS8vIGZsYWfjgpJmYWxzZeOBq+OBl+OBpuWHpueQhuOCkuOCueOCreODg+ODl+OBl+OBpuOBhOOBvuOBmeOAggoJCQl3aGlsZSAoZmxhZykgewoJCQoJCQkJLy8g44Oh44OD44K744O844K444KS5Y+X5L+h44GX44Gm44CBYnVm44Gu5Lit44Gr5L+d5a2YCgkJCSAKCQkJCXN3aXRjaCAoYnVmWzBdKSB7CgkJCQkJY2FzZSBDaGF0UGFyYW0uTEVBVkU6CgkJCQkJCXN0ciA9IG5ldyBTdHJpbmcoYnVmLCAxLCBDaGF0UGFyYW0uTVNJWkUgLSAxKTsKCQkJCQkJbXdpbi5wcmludE1lc3NhZ2Uoc3RyLnN1YnN0cmluZygwLCBzdHIuaW5kZXhPZigwKSkpOwoJCQkJCQlicmVhazsKCQkJCQljYXNlIENoYXRQYXJhbS5GVUxMOgoJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIuePvuWcqOS6uuaVsOWItumZkOOBq+mBlOOBl+OBpuOBhOOBvuOBmSIpOwoJCQkJCQlmbGFnID0gZmFsc2U7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgQ2hhdFBhcmFtLkpPSU46CgkJCQkJCQoJCQkJCWNhc2UgQ2hhdFBhcmFtLk1TRzoKCQkJCQkJc3RyID0gbmV3IFN0cmluZyhidWYsIDEsIENoYXRQYXJhbS5NU0laRSAtIDEpOwoJCQkJCQltd2luLnByaW50TWVzc2FnZShzdHIuc3Vic3RyaW5nKDAsIHN0ci5pbmRleE9mKDApKSk7CgkJCQl9CgkJCX0KCQkKCQkJLy8g5Lul5LiL44Gu6YOo5YiG44Gv44Oh44OD44K744O844K444KS6YCB5L+h44GZ44KL6YOo5YiG44Gn44CB5LuW44Gu5Y+C5Yqg6ICF44GL44KJ44Gu44Oh44OD44K744O844K4CgkJCS8vIOOCkuWPl+S/oeOBmeOCi+mDqOWIhuOBqOOBr+S4puWIl+OBq+OBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAggoJCQl3aGlsZSAodHJ1ZSkgewoJCQkJc2VuZFswXSA9IENoYXRQYXJhbS5NU0c7CgkJCQlzdHIgPSBuYW1lICsgIjoiICsgaW5wdXQucmVhZExpbmUoKSArICJcMCI7CgkJCQltd2luLnByaW50TWVzc2FnZShzdHIpOwoJCQkJY2J1ZiA9IHN0ci5nZXRCeXRlcygpOwoJCQkJU3lzdGVtLmFycmF5Y29weShjYnVmLCAwLCBzZW5kLCAxLCAoY2J1Zi5sZW5ndGggPCBDaGF0UGFyYW0uTVNJWkUgLSAxKT9jYnVmLmxlbmd0aDooQ2hhdFBhcmFtLk1TSVpFIC0gMSkpOwoJCSAKCQkJCS8qIHNlbmTlhoXjga7jg4fjg7zjgr/jgpLpgIHkv6EgKi8KCQkgICAgfQoJCSAKCQkJLyog6YCa5L+h57WC5LqG5Yem55CGICovCgkgCgkgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJjb25uZWN0aW9uIGVycm9yIik7CgkJCVN5c3RlbS5leGl0KDEpOwoJICAgIH0KCX0KfQ==
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:71: error: cannot find symbol
case ChatParam.MSG:
^
symbol: variable ChatParam
location: class ChatCl
Main.java:72: error: cannot find symbol
str = new String(buf, 1, ChatParam.MSIZE - 1);
^
symbol: variable ChatParam
location: class ChatCl
Main.java:80: error: cannot find symbol
send[0] = ChatParam.MSG;
^
symbol: variable ChatParam
location: class ChatCl
Main.java:84: 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:84: 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