package Socket_Try_001;
public class Listener_Port {
/**
* @param args
*/
public static void main(String[] args) {
new Serport().start();
}
}
package Socket_Try_001;
import java.net.Socket;
import java.net.ServerSocket;
import java.io.IOException;
import javax.swing.JOptionPane;
public class Serport extends Thread {
public void run() {
try {
ServerSocket socket = new ServerSocket(12345);
while(true){
Socket Cli_Sct = socket.accept();
JOptionPane.showMessageDialog(null,"启禀皇上,真的连上了!!!");
Cliport cli_pot = new Cliport(Cli_Sct);
Linker_Port.get_Linker_Port().add(cli_pot); // 调整顺序
cli_pot.start();
}
} catch(IOException e) {
e.printStackTrace();
}
}
}
package Socket_Try_001;
import java.util.Vector;
public class Linker_Port{
// 创建单例
private Linker_Port() {}
private static final Linker_Port linker
= new Linker_Port();
public static Linker_Port get_Linker_Port() {
return linker;
}
Vector lp_vec = new Vector();
public void add(Cliport clp) {
// 添加 客户端
lp_vec.add(clp);
}
public void remove(Cliport clp) {
// 删除 客户端
lp_vec.remove(clp);
}
public void publish(Cliport clp,String str)
{
// 不是本客户端将输出字符串
for(int i = 0;i
{
Cliport cp = lp_vec.get(i);
if(!(clp.equals(cp))){
cp.out(str);
}
}
}
}
package Socket_Try_001;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Cliport extends Thread{
//Socket sct = new Socket();
Socket sct;
public Cliport(Socket sct){
this.sct = sct;
}
public void out(String str) {
try {
sct.getOutputStream().write((str+"\n").getBytes("gbk"));
//sct.getOutputStream().write((str+"\n").getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("启禀皇上,你刚刚退出去了!!!");
Linker_Port.get_Linker_Port().remove(this);
e.printStackTrace();
}
}
public void run(){
try {
out("启禀皇上,您刚刚连上了!!!");
BufferedReaderbr = new BufferedReader(
new InputStreamReader(
sct.getInputStream(),"gbk"));
//BufferedReaderbr = new BufferedReader(
//new InputStreamReader(
//sct.getInputStream(),"UTF-8"));
String line = null;
while ((line = br.readLine())!=null) {
System.out.println(line);
//out(line);
Linker_Port.get_Linker_Port().publish(this,line);
}
br.close();
System.out.println("启禀皇上,你刚刚退出去了!!!");
Linker_Port.get_Linker_Port().remove(this);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("启禀皇上,你刚刚退出去了!!!");
Linker_Port.get_Linker_Port().remove(this);
e.printStackTrace();
}
//try {
//int count = 0;
//while (count<100) {
//count++;
//out("loop : "+count);
//sleep(1000);
//}
//}catch (InterruptedException e) {
//e.printStackTrace();
//}
}
}
备注: InputStreamReader,IOException,InputStreamReader,UnsupportedEncodingException,ServerSocket,getInputStream,printStackTrace,Vector。