java网络编程(TCP)-服务端

/**

* 此代码是可以多客户端连接的
* 服务器一定要先读后写,不能颠倒
* 不到万不得已不要对ServerSocket进行关闭
*/

public class Server0 {
private static List<Socket> sockets = new ArrayList<Socket>();

public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(10000);
while (true) {
Socket s = ss.accept();
sockets.add(s);
Server0 server0 = new Server0();
server0.new Start(s).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}

class Start extends Thread {
Socket s = null; //k=客户端
InputStream is = null;
BufferedReader br = null;

public Start(Socket s) {
this.s = s;
}

public void run() {
try {
is = s.getInputStream();
br = new BufferedReader(new InputStreamReader(is,"GBK"));
while (true) {
String clientStr = br.readLine();
System.out.println("客户端输入的内容:" + clientStr);
//输入q时退出程序
if (clientStr.trim().equalsIgnoreCase("q")) {
break;
}
String outputStr = "你说:" + clientStr;

//向所有的客户端发送输入的消息
for (Socket s : sockets) {
OutputStream os = s.getOutputStream();
PrintStream ps = new PrintStream(os,true,"GBK");
ps.println(outputStr);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

猜你喜欢

转载自www.cnblogs.com/lyq1025/p/10857589.html