已经可以取得数据,当我在网站提交一个操作的时候,怎样用已经创建的连接向socket客户端发送命令并且接收数据,下面是我的代码
Mylisten.javapackage socket;import javax.servlet.*;
public class Mylisten implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { String part = event.getServletContext().getInitParameter("socketPort");
String maxConcent=event.getServletContext().getInitParameter("maxcount");
event.getServletContext().log("++++++++++++++++++++++++++++++++");
event.getServletContext().log("++++ Socket服务随web启动而启动 ++++");
event.getServletContext().log("++++++++++++++++++++++++++++++++" + part); new ServerSocketStart(Integer.parseInt(part),Integer.parseInt(maxConcent)).start();
event.getServletContext().log("++++ Socket服务已经启动完毕 ++++");
} public void contextDestroyed(ServletContextEvent event) { }
}
ServerSocketStart.java
package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.*;
import java.util.concurrent.*;
import javax.net.*;
import java.lang.*;
public class ServerSocketStart extends Thread {
private int port;
private int maxConnections;
public ServerSocketStart(int aListenPort, int maxConnections){
this.port=aListenPort;
this.maxConnections=maxConnections;
}
public void run() {
ServerSocketFactory serverSocketFactory=ServerSocketFactory.getDefault();
try {
ServerSocket serverSocket=serverSocketFactory.createServerSocket(port);
//serverSocketFactory.
Socket request = null;
System.out.println("++++++ ServerSocket已经启动 ++++++");
this.setUpHandlers();
while(true) {
request = serverSocket.accept();
System.out.println("++++++ 客户请求成功 ++++++");
//接收客户机连接请求
PooledConnectHandler.processRequest(request);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void setUpHandlers() {
for(int i=0; i<maxConnections; i++) {
PooledConnectHandler currentHandler = new PooledConnectHandler();
System.out.println("++++++ Thread-Handler"+i+"已启动 ++++++");
new Thread(currentHandler, "Handler " + i).start();
}
}
}
Mylisten.javapackage socket;import javax.servlet.*;
public class Mylisten implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { String part = event.getServletContext().getInitParameter("socketPort");
String maxConcent=event.getServletContext().getInitParameter("maxcount");
event.getServletContext().log("++++++++++++++++++++++++++++++++");
event.getServletContext().log("++++ Socket服务随web启动而启动 ++++");
event.getServletContext().log("++++++++++++++++++++++++++++++++" + part); new ServerSocketStart(Integer.parseInt(part),Integer.parseInt(maxConcent)).start();
event.getServletContext().log("++++ Socket服务已经启动完毕 ++++");
} public void contextDestroyed(ServletContextEvent event) { }
}
ServerSocketStart.java
package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.*;
import java.util.concurrent.*;
import javax.net.*;
import java.lang.*;
public class ServerSocketStart extends Thread {
private int port;
private int maxConnections;
public ServerSocketStart(int aListenPort, int maxConnections){
this.port=aListenPort;
this.maxConnections=maxConnections;
}
public void run() {
ServerSocketFactory serverSocketFactory=ServerSocketFactory.getDefault();
try {
ServerSocket serverSocket=serverSocketFactory.createServerSocket(port);
//serverSocketFactory.
Socket request = null;
System.out.println("++++++ ServerSocket已经启动 ++++++");
this.setUpHandlers();
while(true) {
request = serverSocket.accept();
System.out.println("++++++ 客户请求成功 ++++++");
//接收客户机连接请求
PooledConnectHandler.processRequest(request);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void setUpHandlers() {
for(int i=0; i<maxConnections; i++) {
PooledConnectHandler currentHandler = new PooledConnectHandler();
System.out.println("++++++ Thread-Handler"+i+"已启动 ++++++");
new Thread(currentHandler, "Handler " + i).start();
}
}
}
package socket;
import java.lang.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class PooledConnectHandler implements Runnable { protected Socket connection;
@SuppressWarnings("unchecked")
protected static List pool = new LinkedList();
public PooledConnectHandler() {}
public void handleConnection() {
System.out.println("客户:"+connection.getInetAddress()+":"+connection.getPort()+" 在时间:"+Calendar.getInstance().getTime().toString()+"访问过!");
try {
BufferedReader buff = new BufferedReader(new InputStreamReader(connection.getInputStream()));
PrintWriter pw = new PrintWriter(connection.getOutputStream(),true);
pw.println("Start data transfer.");
String d="";
// 显示客户端的传输来的信息
int c;
while ((c=buff.read())!=0 ){
char a = (char)c;
d+=a;
if(d.equals(":531A"))
{
d ="";
}
if(d.length()==57){
pw.println("Stop data transfer.");
if(WriteIpPort.saveip(connection.getInetAddress().toString(),connection.getPort(),d.substring(d.length() - 4)))
{
System.out.print("客户端地址已经保存到数据库");
}
else
{
System.out.print("客户端地址保存失败");
}
System.out.println(d);
break;
}
}
//System.out.println("To Client:");
// Thread.sleep(100);
connection.close();
//
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
public static void processRequest(Socket requestToHandle) {
synchronized(pool) {
pool.add(pool.size(), requestToHandle);
pool.notifyAll();
}
}
public void run() {
while(true) {
synchronized(pool) {
while(pool.isEmpty()) {
try {
pool.wait();
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
connection= (Socket)pool.remove(0);
}
handleConnection();
}
}
}
import java.util.Date;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;public class ListenTest implements ServletContextListener,HttpSessionListener{ int i=0;
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("tomcat关闭:"+new Date());
} public void contextInitialized(ServletContextEvent sce) {
System.out.println("tomcat启动:"+new Date());
} public void sessionCreated(HttpSessionEvent arg0) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
i++;
System.out.println("网页开启:"+sdf.format(new Date())+"---------访问量"+i+"次");
} public void sessionDestroyed(HttpSessionEvent arg0) { System.out.println("网页关闭"+new Date());
}
}
import java.util.Date;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;public class ListenTest implements ServletContextListener,HttpSessionListener{ int i=0;
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("tomcat关闭:"+new Date());
} public void contextInitialized(ServletContextEvent sce) {
System.out.println("tomcat启动:"+new Date());
} public void sessionCreated(HttpSessionEvent arg0) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
i++;
System.out.println("网页开启:"+sdf.format(new Date())+"---------访问量"+i+"次");
} public void sessionDestroyed(HttpSessionEvent arg0) { System.out.println("网页关闭"+new Date());
}
}