多个客户端连接
package socket;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
* 聊天室服务端
* @author ckx
*
*/
public class Server {
/*
* 运行在服务端的ServerSocket
* 有两个作用
* 1.向系统申请服务端口,客户端就是
* 通过这个端口与服务端程序建立联系的
* 2.监听该端口,当客户端通过该端口与服务端
* 建立连接时会自动创建一个socket。通过
* socket与客户端进行数据交互
*/
private ServerSocket server;
public Server(){
try{
/*
* 实例化ServerSock的同时向系统申请服务端口
* 该端口不能与系统运行的其他应用程序相同,否则会
* 抛出地址被占用的异常
*/
System.out.println("正在启动服务端...");
server = new ServerSocket(8088);
System.out.println("服务端启动完毕...");
}catch(Exception e){
e.printStackTrace();
}
}
public void start(){
try{
Scanner scanner = new Scanner(System.in);
/*
*ServerSocket有一个中烟的方法:
*Scoket accept()
*该方法是一个阻塞方法,调用后程序就在这里
*卡住了,这时开始监听服务端口等待客户端的连接,那么当客户端通过端口
*尝试连接是,accept会返回一个Socket
*通过Socket就可以与刚连接的客户端进行交互了
*/
while(true){
System.out.println("等待客户端连接...");
Socket socket = server.accept();
System.out.println("一个客户端连接...");
}
/*
* 通过Socket 获取输入流,读取客户端法师过来的数据
*
*/
// InputStream in
// = socket.getInputStream();
// InputStreamReader isr
// = new InputStreamReader(in,"UTF-8");
// BufferedReader br
// = new BufferedReader(isr);
//
// String message = null;
// while((message = br.readLine())!=null){
// System.out.println("客户端说:"+message);
// }
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.start();
}
}