很簡單,給你寫個(gè)例子:
為墾利等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及墾利網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、墾利網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
//檢測(cè)端口8080到8090哪些可用哪些不可用
for(int i = 8080; i8090; i++){
try {
ServerSocket sskt = new ServerSocket(i);
System.out.println("端口[" +i + "]可用。");
} catch (IOException e) {
System.out.println("端口 [" + i + "] 被占用.");
}
}
給你個(gè)UDP服務(wù)端與客戶端的示例:
服務(wù)端代碼:
import?java.net.DatagramPacket;
import?java.net.InetAddress;
import?java.net.MulticastSocket;
public?class?UDPMulticastServer?{
final?static?int?RECEIVE_LENGTH?=?1024;
static?String?multicastHost?=?"224.0.0.1";
static?int?localPort?=?9998;
public?static?void?main(String[]?args)?throws?Exception?{
InetAddress?receiveAddress?=?InetAddress.getByName(multicastHost);
if?(!receiveAddress.isMulticastAddress())?{//?測(cè)試是否為多播地址
throw?new?Exception("請(qǐng)使用多播地址");
}
int?port?=?localPort;
MulticastSocket?receiveMulticast?=?new?MulticastSocket(port);
receiveMulticast.joinGroup(receiveAddress);
boolean?isStop?=?false;
while(!isStop){
DatagramPacket?dp?=?new?DatagramPacket(new?byte[RECEIVE_LENGTH],?RECEIVE_LENGTH);
receiveMulticast.receive(dp);
String?data?=?new?String(dp.getData()).trim();?
System.out.println(data);
if("exit".equals(data)){
System.out.println("程序退出");
isStop?=?true;
}
}
receiveMulticast.close();
}
}
客戶端代碼:
import?java.net.DatagramPacket;
import?java.net.InetAddress;
import?java.net.MulticastSocket;
public?class?UDPMulticastClient?{
static?String?destAddressStr?=?"224.0.0.1";??
??
static?int?destPortInt?=?9998;??
static?int?TTLTime?=?4;??
public?static?void?main(String[]?args)?throws?Exception?{??
InetAddress?destAddress?=?InetAddress.getByName(destAddressStr);??
if(!destAddress.isMulticastAddress()){//檢測(cè)該地址是否是多播地址??
?throw?new?Exception("地址不是多播地址");??
}??
int?destPort?=?destPortInt;??
MulticastSocket?multiSocket?=new?MulticastSocket();??
// ????int?TTL?=?TTLTime;??
// ????multiSocket.setTimeToLive(TTL);??
byte[]?sendMSG?=?"exit".getBytes();??
DatagramPacket?dp?=?new?DatagramPacket(sendMSG,?sendMSG.length,?destAddress??,?destPort);??
multiSocket.send(dp);??
multiSocket.close();??
}??
}
你是不是想在JSP里面,想獲取當(dāng)前服務(wù)器的端口呢?如果是的話,在JSP里面,代碼是:request.getLocalPort();
如果想獲取客戶端的端口,JSP代碼是:request.getRemotePort();
你的問題描述的不是很清楚,很難確切的回答你。
使用 DatagramSocket(int port) 建立socket(套間字)服務(wù)。
將數(shù)據(jù)打包到DatagramPacket中去
通過socket服務(wù)發(fā)送 (send()方法)
關(guān)閉資源
public static void main(String[] args) {
DatagramSocket ds = null; //建立套間字udpsocket服務(wù)
try {
ds = new DatagramSocket(8999); //實(shí)例化套間字,指定自己的port
} catch (SocketException e) {
System.out.println("Cannot open port!");
System.exit(1);
}
byte[] buf= "Hello, I am sender!".getBytes(); //數(shù)據(jù)
InetAddress destination = null ;
try {
destination = InetAddress.getByName("192.168.1.5"); //需要發(fā)送的地址
} catch (UnknownHostException e) {
System.out.println("Cannot open findhost!");
System.exit(1);
}
DatagramPacket dp =
new DatagramPacket(buf, buf.length, destination , 10000);
//打包到DatagramPacket類型中(DatagramSocket的send()方法接受此類,注意10000是接受地址的端口,不同于自己的端口?。?/p>
try {
ds.send(dp); //發(fā)送數(shù)據(jù)
} catch (IOException e) {
}
ds.close();
}
}
接收步驟:
使用 DatagramSocket(int port) 建立socket(套間字)服務(wù)。(我們注意到此服務(wù)即可以接收,又可以發(fā)送),port指定監(jiān)視接受端口。
定義一個(gè)數(shù)據(jù)包(DatagramPacket),儲(chǔ)存接收到的數(shù)據(jù),使用其中的方法提取傳送的內(nèi)容
通過DatagramSocket 的receive方法將接受到的數(shù)據(jù)存入上面定義的包中
使用DatagramPacket的方法,提取數(shù)據(jù)。
關(guān)閉資源。
import java.net.*;
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(10000); //定義服務(wù),監(jiān)視端口上面的發(fā)送端口,注意不是send本身端口
byte[] buf = new byte[1024];//接受內(nèi)容的大小,注意不要溢出
DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定義一個(gè)接收的包
ds.receive(dp);//將接受內(nèi)容封裝到包中
String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出內(nèi)容
System.out.println(data);//打印內(nèi)容
ds.close();//關(guān)閉資源
}
}
public?class?TestPort
{
public?static?void?main(String[]?args)
{
System.out.println(getPID("3306"));//得到進(jìn)程ID,3306是端口名稱
System.out.println(getProgramName(getPID("3306")));//根據(jù)進(jìn)程ID得到映像名稱
killTask(getProgramName(getPID("3306")));//根據(jù)映像名稱關(guān)閉進(jìn)程
}
//?得到進(jìn)程ID
public?static?String?getPID(String?port){
InputStream?is?=?null;
BufferedReader?br?=?null;
String?pid?=?null;
try
{
String[]?args?=?new?String[]{"cmd.exe","/c","netstat?-aon|findstr",port};
is?=?Runtime.getRuntime().exec(args).getInputStream();
br?=?new?BufferedReader(new?InputStreamReader(is));
String?temp?=?br.readLine();
if(temp?!=?null){
String[]?strs?=?temp.split("\\s");
pid=strs[strs.length-1];
}
}
catch?(IOException?e)
{
e.printStackTrace();
}finally{
try
{
br.close();
}
catch?(IOException?e)
{
e.printStackTrace();
}
}
return?pid;
}
//根據(jù)進(jìn)程ID得到映像名稱
public?static?String?getProgramName(String?pid){
InputStream?is?=?null;
BufferedReader?br?=?null;
String?programName?=?null;
try
{
String[]?args?=?new?String[]{"cmd.exe","/c","tasklist|findstr",pid};
is?=?Runtime.getRuntime().exec(args).getInputStream();
br?=?new?BufferedReader(new?InputStreamReader(is));
String?temp?=?br.readLine();
if(temp?!=?null){
String[]?strs?=?temp.split("\\s");
programName=strs[0];
}
}
catch?(IOException?e)
{
e.printStackTrace();
}finally{
try
{
br.close();
}
catch?(IOException?e)
{
e.printStackTrace();
}
}
return?programName;
}
//根據(jù)映像名稱關(guān)閉進(jìn)程
public?static?void?killTask(String?programName){
String[]?args?=?new?String[]{"Taskkill","/f","/IM",programName};
try
{
Runtime.getRuntime().exec(args);
}
catch?(IOException?e)
{
e.printStackTrace();
}
}
}
//題主自己看看具體怎么get它的ip地址,好久沒有寫,不知道了
直接上代碼:
import?java.net.Socket;
import?java.text.SimpleDateFormat;
import?java.util.Date;
public?class?PortScanner?extends?Thread?{
private?int[]?p;
Socket?ss?=?null;
public?PortScanner(int[]?p)?{
this.p?=?p;
}
public?static?void?main(String[]?args)?{
for?(int?i?=?0;?i??65535;?i?=?i?+?100)?{
new?PortScanner(new?int[]?{?i?+?1,?i?+?100?}).start();
}
}
@Override
public?void?run()?{
for?(int?i?=?p[0];?i??p[1];?i++)?{
try?{
ss?=?new?Socket("8.8.8.8",?i);
System.out.println("掃描到端口:?"?+?i);
}?catch?(Exception?e)?{
//?System.out.println("關(guān)閉端口:?"?+?i);
}
}
}
}
名稱欄目:java識(shí)別端口代碼 java掃描端口
網(wǎng)頁URL:http://aaarwkj.com/article36/hhpipg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、域名注冊(cè)、外貿(mào)建站、標(biāo)簽優(yōu)化、動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)