導航:首頁 > IDC知識 > 伺服器監聽

伺服器監聽

發布時間:2020-08-29 15:00:42

1、易語言伺服器如何監聽客戶埠

可以考慮用JAVA實現監聽客戶埠,參考例子如下:

package test; 
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
/**
 * 該程序用的DatagramSocket,實現UDP的通訊
 * @author D'Addario
 *
 */
public class Test{
 
    private int headLen = 12;//消息起點和終點的記錄 例如classAclassB就是發往classA的消息,發送者是classB
    private Random random;
    private String serverIp;
    private int serverPort;
    private  HashMap<String,Classes> map ;
    {
        serverIp = "127.0.0.1";
        serverPort = 9999; 
        random = new Random(System.currentTimeMillis());
        map = new HashMap<String,Classes>();
        Classes A = Test.this.new Classes();
        A.ip = "127.0.0.1";
        A.name = "我是A";
        A.port = 10000;
        map.put("classA", A);
 
        Classes B = Test.this.new Classes();
        B.ip = "127.0.0.1";
        B.name = "我是B";
        B.port = 10001;
        map.put("classB", B);
    }
    public static void main(String[] a) throws  Exception{
        Test test = new Test();
        new Thread(test.new Server()).start();
        Client client1 = test.new Client();
        client1.mine = "classA";
        client1.remote = "classB";
        new Thread(client1).start();
 
        Client client2 = test.new Client();
        client2.mine = "classB";
        client2.remote = "classA";
        new Thread(client2).start();
 
    }
    /**
     * 成員 用於記錄 每個成員的個性信息
     * @author D'Addario
     *
     */
    private class Classes {
        private String name ; //成員姓名
        private String ip ; //成員ip
        private int port;//成員的client server 監聽埠
    }
    /**
     * server 用於轉發兩個client之間消息的類
     * @author D'Addario
     *
     */
    private class Server implements Runnable{
 
        public void run() {
            // TODO Auto-generated method stub
            boolean start = false;
            DatagramSocket socket = null;
            try {
                socket = new DatagramSocket(serverPort);
                start = true;
            } catch (SocketException e1) {
 
                e1.printStackTrace();
            }
            while(start)
            {
 
                try {
 
                    byte[] data = new byte[1024];
                    DatagramPacket packet = new DatagramPacket(data,data.length);
                    socket.receive(packet);
                    int len = packet.getLength();
                    //System.out.println("recevie data:"+new String(data,0,len));                
                    if(len<headLen)
                        throw new IOException("無效數據");
                    String id = new String(data,0,headLen/2);//獲取發往對象的ID
                    String id2 = new String(data,headLen/2,headLen/2);    
                    System.out.println("receive from "+id2 +", send to "+id+",msg["+new String(data,headLen,len-headLen)+"]");
                    Classes one = map.get(id.trim());        
                    DatagramPacket retPack = new DatagramPacket(data,0,len,InetAddress.getByName(one.ip),one.port);
                    socket.send(retPack);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * Client 客戶端類,用於客戶端消息的發送
     * @author D'Addario
     *
     */
    private class Client implements Runnable{
 
        private String mine;
        private String remote;
 
 
        public void run() {
            // TODO Auto-generated method stub
            String msg = remote+mine;
            DatagramSocket socket = null;
            try {
                socket = new DatagramSocket(map.get(mine).port);
                ClientServer srv=new ClientServer();
                srv.setSocket(socket);
                new Thread(srv).start();
            } catch (SocketException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            byte[] data ;
            while(true)
            {
                String sendStr = msg + "給我"+random.nextInt(5000)+"分吧";
                data = sendStr.getBytes();
 
                try {
                    DatagramPacket retPack = new DatagramPacket(data,0,data.length,InetAddress.getByName(serverIp),serverPort);
                    socket.send(retPack);
                    Thread.sleep(random.nextInt(5)*1000);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
 
 
            }
        }    
    }
    /**
     * 客戶端server 用於監聽伺服器的消息
     * @author D'Addario
     *
     */
    private class ClientServer implements Runnable{
        DatagramSocket socket ;
 
        public DatagramSocket getSocket() {
            return socket;
        }
 
        public void setSocket(DatagramSocket socket) {
            this.socket = socket;
        }
 
        public void run() {
            byte[] data = new byte[1024];
            DatagramPacket packet = new DatagramPacket(data,data.length);
            while(true){
                try {
                    socket.receive(packet);
                    int len = packet.getLength();
                    if(len<headLen)
                        throw new IOException("無效數據");
                    System.out.println("I get the message :"+Thread.currentThread().getId()+"-->["+new String(data,0,len)+"]");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }    }        
        }
 
    }
 
}

2、伺服器監聽埠號起什麼作用

伺服器埠號 ,是伺服器監聽客戶端用的 ,相當於"地址" ,是伺服器與客戶端間的紐帶 .
舉個例子:你登陸QQ ,你把你的用戶名和密碼輸入後,點擊"登陸" ,此時,客戶端就會把你的密碼和用戶名發送到該埠的埠號.然後伺服器經過到資料庫驗證,如果正確,就會把正確的信息發給你的客戶端(就是你 的電腦) .

埠有好多,電腦中有9000多個已經規定好的埠,還有好多自己定義的埠,8000 ,10000

不懂的還可以找我
[email protected]

3、如何讓客戶端監聽伺服器

長鏈接就可以了。連上去以後onaccept就可以接收到服務端的onsend

4、監聽伺服器的概念是什麼啊??

時刻與伺服器保持聯系 做好准備
當伺服器掛掉 馬上會有反應

5、java如何實現在伺服器開一個監聽,如果客戶

1. className 此Valve 實現的Java 類名
2. debug 調試等級,0 表示不調試,而正數則表示不同程度的調試等級,數字愈高,顯示的調試信息就愈詳細。默認值是0
3. escapeQuotes 在執行請求前,決定此Valve 是否要轉義請求消息中的任何引號(包括雙及單引號)。默認值為false
4. escapeAngleBrackets 在執行請求前,決定此Valve 是否要轉義請求消息中的任何尖括弧。默認值為false
5. escapeJavaScript 決定此Valve是否要轉義請求消息中任何對JavaScript函數與對象的可能有危險的引用。默認值為false
6. allow 此Valve 允許的正則表示式清單,以逗號分隔 [可選]
7. deny 此Valve 禁止的正則表示式清單,以逗號分隔 [可選]

6、如何查看遠程伺服器的監聽服務監聽了哪些資料庫服務?

lsnrctl status <伺服器地址如: lsnrctl status 192.168.0.126如果遠程伺服器監聽的是其它埠,那需要在本機的對遠程伺服器監聽的連接配置,具體做法是有$ORACLE_HOME/network/admin/listener.ora文件中增加一個監聽器,監聽器的地址是遠程伺服器址,埠是遠程的埠,如:LISTENER126 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.126)(PORT = 1522)))表示連接到192.168.0.126的1522監聽埠。然後用lsnrctl status LISTENER126就可顯示遠程伺服器的監聽狀態了。同理,可以用這種方法啟動和停止遠程伺服器的監聽。

7、伺服器的偵聽埠是什麼意思

伺服器傾聽埠 ,是伺服器監聽客戶端用的 ,相當於"地址" ,是伺服器與客戶端間的紐帶 .
舉個例子:你登陸QQ ,你把你的用戶名和密碼輸入後,點擊"登陸" ,此時,客戶端就會把你的密碼和用戶名發送到該埠的埠號.然後伺服器經過到資料庫驗證,如果正確,就會把正確的信息發給你的客戶端(就是你 的電腦) .

監聽埠能使你獲得遠程連接。前提是你是公網IP,或網關上對你的監聽的埠作了埠映射。在埠通的情況下,你就會看到「遠程」,意味著很多內網用戶就可連接到你。你就可以和更多的人進行連接下載,一般來說你的速度就會快起來。簡單的說,你不監聽埠,將少了一半的傳輸機會。

8、默認情況下,FTP伺服器監聽( )埠得知客戶端的服務請求。(選擇一項)

很明顯
選C

9、如何讓伺服器監聽兩個埠?

最合理的方式是建立多個線程,每個線程監聽一個埠。
當然一段代碼輪詢監聽也不是不可以,但在效率上要低不少

10、伺服器:「監聽埠號」中的監聽是什麼意思?

監聽就是伺服器上的軟體一直查看特定的埠,如果有從這個埠訪問的就接管

與伺服器監聽相關的知識