本地端口监听
import java.io.IOExceptionimport java.net.ServerSocket
import java.net.Socket
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
public class SocketServer
{
private ServerSocket serverSocket
private ExecutorService executorService// 线程池
private final int 槐桥判POOL_SIZE = 600// 单个CPU线程池大小
public SocketServer() throws IOException
{
serverSocket = new ServerSocket(9888)//监听的端口号
// Runtime的availableProcessor()方法返回当前系统的CPU数目.
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SIZE)
System.out.println("服务器启动")
}
public void service()
{
while (true)
{
Socket socket = null
try
{
// 接收客户连接,只要客户进行了连接,就会触发accept()从而建立连接
socket = serverSocket.accept()
executorService.execute(new Handlers(socket))
//这里就是放业务逻辑的地方例如获取数据等等
} catch (Exception e)
{
e.printStackTrace()
System.out.println("socket Exception:" + e)
}
}
}
public static void main(String[] args) throws IOException
{
//Thread thread = new Thread(new PringtThread())
//thread.start()
new SocketServer().service()
}
}
端口扫描代码
import java.io.IOException
import java.net.Socketpublic class SearchPort implements Runnable
{
public static void main(String[] args)
{
SearchPort searchPort = new SearchPort()
Thread thread = new Thread(searchPort)
thread.start()
}
@Override
public void run()
{
searchPort("192.168.1.2", 0, 9999)
}
public void searchPort(String ip,int begin, int end) {
// 1-65535
Socket s = null
for (int i = begin i < end i++) {
铅改 boolean flag = false
try {
s = new Socket(ip, i)
消高 flag = s.isConnected()
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace()
}
if (flag) {
System.out.println("port " + i + " is open")
try {
s.close()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
} else {
// System.out.println("port " + i + " is close")
}
}
//System.out.println("seach port :" + begin + " to " + end + " ok..")
}
}
第一个端口监听的采用了线程池的技术,当大数据来的时候也不怕(某大型企业的部分源码),第二个例子是端口扫描器,采用了多线程扫描,代码直接复制就可以用的,从10点50分打代码11点半,不容易,望楼主采纳,有什么问题可以问我
肯定是socket监听啊,然后每次跟一个客户端建立一个连接以后,服务器上开辟亩源一个新的服务线程为客户端服务,然后搜世 *** 作JDBC。不建议用raw的流,一开始还迅漏态是老老实实用tcp协议吧首先使用ps -ef 确认你好掘要监袜袜滚控的weblgoic,修告余改setDomain.sh文件 添加如下内容:JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=9999"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false "
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.pwd.file=/opt/bea/jrockit90_150_06/jre/lib/management/jmxremote.password"
# JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"
export JAVA_OPTIONS
关于jconsole的访问密码,可在该实例所使用的$JRE_HOME/lib/management/下配置,很重要的两个文件是
jmxremote.password.template #配置访问用户名与密码
jmxremote.access #增加该用户访问权限,
这样配置就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)