⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socketserver.java

📁 Java面试大全.rar Java面试大全.rar
💻 JAVA
字号:
//服务器程序的开发原理:
//客户端向服务器提交申请,服务器程序生成了一个拥有对应客户端的Socket线程,该线程便成为了服务代理,每个线程代理一个
//客户端,服务器继续侦听连接请求。如果某个客户端出现了问题,并不会影响其它客户端的运行,因为各个客户端是相互独立的。
//主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。
//当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。

import java.net.*;
import java.io.*;
public class SocketServer
{	public static void main(String args[])
	{	ServerSocket ss=null;
		int port=1000;
		boolean listening=true;
		try
		{ ss=new ServerSocket(port);
		}
		catch(IOException e)
			{   System.err.println("Cannot Listen.");
				System.exit(-1);
			}
		port=ss.getLocalPort();
		System.out.println("Listening on Port:"+port);
		while(listening)
		{  Socket cs=null;
			try
			{ cs=ss.accept(); 
//Accept()方法直到接收到用户的连接请求,才继续执行中断的执行程序
			}
			catch(IOException e)
			{    System.err.println("Accept failed:"+port);
			     continue;
			}
			new SocketServerThread(cs).start();
		}
		try
		{ ss.close();
		}
		catch(IOException e)
			{ System.err.println("Canot closed server socket.");
			}
	}
}
class SocketServerThread extends Thread
{	Socket s=null;
	SocketServerThread(Socket socket)
	{   super("SocketServerThread");
		s=socket;
	}
	public void run()
	{  try
		{ 
		  DataInputStream sin=new DataInputStream(s.getInputStream());
		  PrintStream sout=new PrintStream(s.getOutputStream());	
/*也可以采用如下方式:
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out= new PrintWriter(s.getOutputStream(),true);
*/
		  String acceptText;
		  while(true)
		  { if((acceptText=sin.readLine())!=null)
			{	sout.println("Server Message:"+acceptText);
			}
			else
				break;
		  }
		  sout.close();
		  sin.close();
		  s.close();
		}catch(IOException e)
			{ e.printStackTrace();
			}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -