//创建ServerSocket
ServerSocket serverSocket;
Socket clientSocket;
serverSocket = new ServerSocket(9999);
while ((clientSocket = serverSocket.accept()) != null) {
System.out.println("Accept from client " + s.getInetAddress());
s.close();
}
//监听内部网
public static final short PORT = 9999;
public static final String INSIDE_HOST = "acmewidgets-inside"; //网络接口名
public static final int BACKLOG = 10; //待发数
serverSocket = new ServerSocket(PORT, BACKLOG, InetAddress.getByName(INSIDE_HOST));
//返回相应对象
ServerSocket serverSocket = new ServerSocket(9999);;
Socket clientSocket;
BufferedReader in = null;
PrintWriter out = null;
while (true) {
clientSocket = serverSocket.accept();
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "8859_1"));
out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "8859_1"), true);
String echoLine;
while ((echoLine = in.readLine()) != null) {
System.out.println("Read " + echoLine);
out.print(echoLine + "\r\n");
}
}
// 以 上例子返回字符串,如果返回二进制,则使用DataOutputStream;返回对象,使用ObjectOutputStream
//处理多客户端
//需要 把接收数据的处理放入多线程中
public class EchoServerThreaded {
public static final int ECHOPORT = 7;
public static final int NUM_THREADS = 4;
public static void main(String[] av) {
new EchoServerThreaded(ECHOPORT, NUM_THREADS);
}
public EchoServerThreaded2(int port, int numThreads) {
ServerSocket servSock;
Socket clientSocket;
try {
servSock = new ServerSocket(ECHOPORT);
} catch(IOException e) {
throw new RuntimeException("Could not create ServerSocket " + e);
}
for (int i = 0; i < numThreads; i++) {
new Handler(servSock, i).start();
}
}
}
class Handler extends Thread {
ServerSocket servSock;
int threadNumber;
Handler(ServerSocket s, int i) {
super();
servSock = s;
threadNumber = i;
setName("Thread " + threadNumber);
}
public void run() {
while (true) {
try {
System.out.println(getName() + " waiting");
Socket clientSocket;
synchronized (servSock) {
clientSocket = servSock.accept();
}
System.out.println(getName() + " starting, IP=" + clientSocket.getInetAddress());
BufferedReader is = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
PrintStream os = new PrintStream(clientSocket.getOutputStream(), true);
String line;
while ((line = is.readLine()) != null) {
os.print(line + "\r\n");
os.flush();
}
System.out.println(getName() + " ENDED ");
clientSocket.close();
} catch (IOException ex) {
System.out.println(getName() + ": IO Error on socket " + ex);
return;
}
}
}
}
// 使用SSL和JSSE保护Web服务器
SSLServerSocketFactory ssf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
ServerSocket serverSocket = ssf.createServerSocket(8080);
/* Log4j
Level 级别: DEBUG < INFO < WARN < ERROR < FATAL < OFF
Appender: 输 出信息
ConsoleAppender: 输出控制台 System.out
*/
// 找到网络接口
Enumeration list = NetworkInterface.getNetworkInterfaces();
while (list.hasMoreElements()) {
NetworkInterface iface = (NetworkInterface)list.nextElement();
System.out.println(iface.getDisplayName());
Enumeration addrs = iface.getInetAddresses();
while (addrs.hasMoreElements()) {
InetAddress addr = (InetAddress)addrs.nextElement();
System.out.println(addr);
}
} |
|