日期:2014-05-20 浏览次数:20967 次
public class Server {
private static final int MAX = 10;
public Server() {
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("服务器启动……");
while (true) {
if (ClientSocket.getCount() < MAX) {
Socket s = ss.accept();
new ClientSocket(s);
} else {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
new Server();
}
}
class ClientSocket extends Thread {
private static int count = 0;
private Socket s = null;
private InetAddress ia = null;
private String ip = null;
public ClientSocket(Socket s) {
count++;
this.s = s;
this.ia = s.getInetAddress();
this.ip = this.ia.getHostAddress();
this.start();
}
public void run() {
try {
File f = new File("pop.jpg");
if (f.exists()) {
OutputStream os = s.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] data = new byte[1024];
int len = 0;
System.out.println("开始向" + ip + "传送文件");
bos.write(("FILE:" + f.getName()).getBytes());
bos.flush();
while ((len = bis.read(data)) != -1) {
bos.write(data, 0, len);
bos.flush();
}
// bos.write("quit".getBytes());
bis.close();
bos.close();
System.out.println("向" + ip + "传送文件完毕");
}
} catch (IOException e) {
e.printStackTrace();
}
count--;
try {
s.close();
System.out.println("关闭");
} catch (IOException e) {
e.printStackTrace();
}
}
public static int getCount() {
return count;
}
}
------解决方案--------------------
楼主我以前写过这样的例子,是C/S架构的,你要的话E-mail我一下,我发给你参考参考279074838@qq.com