import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer {
boolean started = false;
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();
public static void main(String[] args) {
new ChatServer().start();
}
public void start() {
try {
ss = new ServerSocket(8888);
started = true;
} catch (BindException e) {
System.out.println("端口使用中....");
System.out.println("请关掉相关程序并重新运行服务器!");
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
}
try {
while(started) {
Socket s = ss.accept();
Client c = new Client(s);
System.out.println("a client connected!");
new Thread(c).start();
clients.add(c);
//dis.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Client implements Runnable {
private Socket s;
private DataInputStream dis = null;
private DataOutputStream dos = null;
private boolean bConnected = false;
public Client(Socket s) {
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
bConnected = true;
} catch (IOException e) {
e.printStackTrace();
}
}
public void send(String str) {
try {
dos.writeUTF(str);
} catch (IOException e) {
clients.remove(this);
System.out.println("对方退出了!我从List里面去掉了!");
//e.printStackTrace();
}
}
public void run() {
try {
while(bConnected) {
String str = dis.readUTF();
System.out.println(str);
for(int i=0; i<clients.size(); i++) {
Client c = clients.get(i);
c.send(str);
//System.out.println(" a string send !");
}
/*
for(Iterator<Client> it = clients.iterator(); it.hasNext(); ) {
Client c = it.next();
c.send(str);
}
*/
/*
Iterator<Client> it = clients.iterator();
while(it.hasNext()) {
Client c = it.next();
c.send(str);
}
*/
}
} catch (EOFException e) {
System.out.println("Client closed!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(dis != null) dis.close();
if(dos != null) dos.close();
if(s != null) {
s.close();
//s = null;
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JAVA 的BBS的开发案例
共97个文件
class:49个
java:22个
project:13个
4星 · 超过85%的资源 需积分: 8 45 下载量 180 浏览量
2009-03-25
10:50:32
上传
评论
收藏 65KB RAR 举报
温馨提示
JAVA 的BBS的开发案例JAVA 的BBS的开发案例JAVA 的BBS的开发案例JAVA 的BBS的开发案例JAVA 的BBS的开发案例JAVA 的BBS的开发案例
资源推荐
资源详情
资源评论
收起资源包目录
source.rar (97个子文件)
source
Chat0.6
.project 383B
bin
ChatServer.class 1KB
ChatClient$TFListener.class 1KB
ChatClient.class 2KB
ChatClient$1.class 643B
src
ChatServer.java 482B
ChatClient.java 1KB
.classpath 232B
Chat
.project 380B
bin
ChatClient.class 590B
src
ChatClient.java 263B
.classpath 232B
Chat1.2
.project 383B
bin
ChatServer.class 2KB
ChatClient$TFListener.class 1KB
ChatClient.class 3KB
ChatClient$RecvThread.class 2KB
ChatClient$1.class 677B
ChatServer$Client.class 2KB
src
ChatServer.java 2KB
ChatClient.java 2KB
.classpath 232B
Chat0.9
.project 383B
bin
ChatServer.class 2KB
ChatClient$TFListener.class 1KB
ChatClient.class 2KB
ChatClient$1.class 677B
src
ChatServer.java 1KB
ChatClient.java 2KB
.classpath 232B
Chat1.1
.project 383B
bin
ChatServer.class 2KB
ChatClient$TFListener.class 1KB
ChatClient.class 2KB
ChatClient$1.class 677B
ChatServer$Client.class 2KB
src
ChatServer.java 2KB
ChatClient.java 2KB
.classpath 232B
Chat1.0
.project 383B
bin
ChatServer.class 2KB
ChatClient$TFListener.class 1KB
ChatClient.class 2KB
ChatClient$1.class 677B
ChatServer$Client.class 2KB
src
ChatServer.java 2KB
ChatClient.java 2KB
.classpath 232B
Chat1.3
.project 383B
bin
ChatServer.class 2KB
ChatClient$TFListener.class 1KB
ChatClient.class 3KB
ChatClient$RecvThread.class 2KB
ChatClient$1.class 677B
ChatServer$Client.class 2KB
src
ChatServer.java 3KB
ChatClient.java 3KB
.classpath 232B
Chat0.7
.project 383B
bin
ChatServer.class 1KB
ChatClient$TFListener.class 1KB
ChatClient.class 2KB
ChatClient$1.class 643B
src
ChatServer.java 482B
ChatClient.java 1KB
.classpath 232B
Chat0.5
.project 383B
bin
ChatServer.class 844B
ChatClient$TFListener.class 1KB
ChatClient.class 1KB
ChatClient$1.class 643B
src
ChatServer.java 343B
ChatClient.java 862B
.classpath 232B
Chat0.8
.project 383B
bin
ChatServer.class 1KB
ChatClient$TFListener.class 1KB
ChatClient.class 2KB
ChatClient$1.class 677B
src
ChatServer.java 631B
ChatClient.java 2KB
.classpath 232B
Chat0.3
.project 383B
bin
ChatClient.class 1KB
ChatClient$1.class 643B
src
ChatClient.java 607B
.classpath 232B
Chat0.4
.project 383B
bin
ChatClient$TFListener.class 1KB
ChatClient.class 1KB
ChatClient$1.class 643B
src
ChatClient.java 862B
.classpath 232B
Chat0.2
.project 383B
bin
ChatClient.class 917B
src
ChatClient.java 428B
.classpath 232B
共 97 条
- 1
资源评论
- 字节魔法2013-01-10有点小啊,学习一下思路也不错
- cscjiang2012-10-25这个内容是GUI编程的小例子啊
- comman1232018-09-19不错资源,初学者适合学习。
- klloio2012-12-03小例子,初学者可以看看
zblichao1
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功