没有合适的资源?快使用搜索试试~ 我知道了~
java 聊天室 客户端和服务器代码
需积分: 10 12 下载量 54 浏览量
2012-04-03
11:53:13
上传
评论 1
收藏 116KB DOCX 举报
温馨提示
试读
12页
用java线程实现聊天室的功能,多人聊天,记录登陆时间和退出时间。有运行实例截图
资源推荐
资源详情
资源评论
課題1
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
public class ChatServer {
Vector<Channel> channel; // チャネル
int port; // ポート番号
ServerSocket ssock; // 接続受け付け用サーバソケット
public static void main(String args[]) {
(new ChatServer(args)).handle();
}
ChatServer(String args[]) {
String sPort;
if ( args.length < 1) {
System.out.println(
"usage: java ChatServer #Port "
);
System.out.println(
"usage: Default Port 13131"
);
sPort = "13131";
} else {
sPort = args[0];
}
channel = new Vector<Channel>();
// ポート番号
try {
port = Integer.parseInt(sPort);
} catch (NumberFormatException e1) {
System.out.println(
"usage: java ChatServer #Port "
);
System.out.println(
"usage: Default Port 13131"
);
}
}
void handle() {
Channel c;
try {
ssock = new ServerSocket(port);
} catch(IOException e1) {
System.out.println("The port #" + port + " may be
occupied.");
System.exit(1);
}
System.out.println(
"Java Chat Server : Listening to the port #" +
port + "."
);
// 接続を待ち、接続されたら新しいチャネルを作る
try {
while (true) {
c = new Channel(ssock.accept(), this);
channel.add(c);
c.start();
}
} catch(IOException e) {
System.out.println("Server socket has been
closed.");
System.exit(1);
}
}
synchronized void broadcast(String s,Socket now) {
int i,n;
Channel c;
s=new SimpleDateFormat("hh:mm:ss ").format(new Date()) +
s;
for (i = 0, n = channel.size(); i < n; i++) {
c = (Channel)channel.get(i);
if(!c.socket .equals(now))
{
if (c.alive) {
c.send(s);
} else {
channel.remove(i);
i--; n--;
}
}
}
}
}
class Channel extends Thread {
Socket socket; // ソケット
ChatServer chatsv; // チャットサーバ本体
BufferedReader in; // 入力用ストリーム
BufferedWriter out; // 出力用ストリーム
String username; // クライアントのハンドル名
boolean alive; // 接続中なら true
剩余11页未读,继续阅读
资源评论
z07diac
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功