1. 程式人生 > >使用HttpListener在伺服器端進行監聽埠

使用HttpListener在伺服器端進行監聽埠

   public class HttpPortListentHelp
    {
        private HttpListener _listener;

        //負責監聽
        private Thread _threadWatchPort;

        public void StartListening()
        {
            try
            {
                _listener = new HttpListener();
                _listener.Prefixes.Add("http://10.45.17.136:10001/"); //新增需要監聽的url範圍,Prefixes可新增多個

                _listener.Start(); //開始監聽埠,接收客戶端請求
                _threadWatchPort = new Thread(WatchPort);
                _threadWatchPort.Start();
            }
            catch (Exception ex)
            {

            }
        }

        private void WatchPort()
        {
            while (true)
            {
                try
                {
                    HttpListenerContext context = _listener.GetContext(); //等待請求連線,沒有請求則GetContext處於阻塞狀態

                    HttpListenerRequest request = context.Request; //客戶端傳送過來的訊息
                    var reader = new StreamReader(request.InputStream);
                    var msg = reader.ReadToEnd();

                    string type = context.Request.QueryString["type"];
                    string userId = context.Request.QueryString["userId"];
                    string password = context.Request.QueryString["password"];
                    string filename = Path.GetFileName(context.Request.RawUrl);
                    string userName = HttpUtility.ParseQueryString(filename).Get("userName");//避免中文亂碼,HttpUtility需要新增 System.Web
(在 System.Web.dll 中)

                    HttpListenerResponse response = context.Response;
                    context.Response.StatusCode = 200;//設定返回給客服端http狀態程式碼
                    string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
                    byte[] buffer = Encoding.UTF8.GetBytes(responseString);
                    response.ContentLength64 = buffer.Length;
                    Stream output = response.OutputStream;
                    output.Write(buffer, 0, buffer.Length); //服務端傳送回訊息給客戶端
                    output.Close();
                }
                catch
                {
                    break;
                }
            }
        }

        public void CloseSocket()
        {
            if (_listener != null)
            {
                _listener.Stop();
                _listener.Close();
            }
            if (_threadWatchPort != null)
            {
                _threadWatchPort.Abort();
            }
        }
    }

相關推薦

使用HttpListener伺服器進行

   public class HttpPortListentHelp     {         private HttpListener _listener;         //負責監聽         private Thread _threadWatchPort;

java網路程式設計:9、基於TCP的socket程式設計(二)伺服器迴圈接收多個客戶_多執行緒伺服器程式

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、核心程式碼編寫 1、伺服器端程式的編寫 2、客戶端程式的編寫 3、測試列印輸出 二、系列文章(java網路程式設計) 上篇講了基於tcp的程式設計的一些基礎知識

使用UDP協議編寫一個網路程式,設定接收程式的是8001,傳送傳送的資料是“Hello, world”

import java.net.*; public class UdpC { public static void main(String[] args) throws Excepti

SVN開啟,並設置開機啟動

監聽端口 啟動 port epo -- clas 倉庫 XP 設置 svnserve -d -r /home/svn/repo --listen-port=3690,svn倉庫地址,及監聽端口 vi svn_startup.sh,位置在/root下面編輯一個啟動腳本

node多項目同時運行,nginx轉發

pm2 服務 all 服務器端 list 查看 進程 我們 運行 在服務器端安裝pm2 npm install npm2 -g --save 之後再項目目錄下運行 pm2 start app.js 在查看進程,是否已經啟動 pm2 list 多個項目,我們只要

Nginx配置IPv6及務器設置IPV6及Https支持並通過AppStore審核

要求 虛擬網卡 只需要 inux vps ref 阿裏雲服務 www 技術 一、監聽端口 從Nginx 1.3的某個版本起,默認ipv6only是打開的,所以,我們只需要在監聽中加入ipv6監聽即可,不過推薦都手動加上比較好,代碼如下: listen [::]:80 ip

Oracle資料庫

問題描述: Oracle資料庫安裝完成之後,在其他機器無法遠端訪問該資料庫。 解決方法: 1.確保網路和防火牆開通(防火牆開通1521埠) 2.檢視1521埠是否啟用 netstat -n|grep 1521 如果命令執行結果中,沒有1521,說明該埠監聽沒

php-fpm 啟動後沒有9000

netstat -an未發現監聽9000埠。檢視/var/log/php5-fpm.log一切正常。 隨後檢視centos/usr/local/php/etc/php-fpm.con (ubuntu:/etc/php5/fpm/pool.d/www.conf,) 發現li

Windows8 Metro介面下的StreamSocketListener物件做

StreamSocketListener 是一個很方便的伺服器監聽物件,利用它我們可以很簡單的實現對伺服器埠的監聽。使用StreamSocketListener物件進行監聽需要以下幾步: 1. 例項化一個StreamSocketListener物件 2. 註冊例項收到連線時的事件 3.

Linux C

int socket(int domain,int type,int protocol); domain引數指定協議族 type引數指定這個套接字的通訊型別 protocol引數指定使用的協議 AF_UNIX         UNIX域協議

centos6.8 修改php-fpm的

主要是修改php-fpm的監聽埠,然後修改nginx的配置,對應php-fpm的監聽埠。 修改 /etc/php-fpm.d/www.conf 檔案,將監聽的 listen = 127.0.0.1:9000 改成 listen = 127.0.0.1:8999 serv

自己動手寫servlet容器 2.2: 接收請求

監聽埠接收請求 上一步中我們已經定義好了Server介面,並進行了多次重構,但是實際上那個Server是沒啥毛用的東西。現在要為其新增真正有用的功能。大師說了,飯要一口一口吃,衣服要一件一件脫,那麼首先來定個小目標——啟動ServerSocket監聽請求,不要什麼多執行緒不

移動h5瀏覽器返回操作(目前在react專案中用到)

前言 1.主要是返回是預設的瀏覽器返回事件是返回上一個頁面。 2.處理頁面各種彈窗,點選物理返回應該隱藏這些彈窗而不是直接返回頁面。 3.總結下問題,h5應該希望能監聽到返回事件並且做一些處理。 相關知識 1、利用popstate事件,點選瀏覽器前進,後退會

Tomcat 無法啟動8080

分享 ext pro ESS size ffffff 而且 nio cat catalina.out錯誤日誌顯示:信息: The APR based Apache Tomcat Native library which allows optimal performance

eas再ListUIPIEx中新增工具欄按鈕並進行操作

問題背景 有這麼一個需求,需要再eas中新增一個工具欄按鈕,批量操作選中的資料,工具欄是toolBar,按鈕是KDWorkButton。 操作實戰 話不多說,直接實操。 1.首先要拓展對應的ListUIPIEx類 public class ManufactureOrderT

【驗證】nodejs單執行緒理解:一個nodejs開兩個,執行時是否是兩個執行緒?

一個nodejs開兩個監聽埠,執行時是否是兩個執行緒?因為剛接觸nodejs不久,以上問題,困惑了我很久,一直想不明白。既然想不明白就直接上程式碼驗證一下,看結果是什麼樣。var express1 = require('express'); var express2 = re

如果有2個ApacheMQ的客戶同時一個Queue會怎麼樣

我們知道Topic,是傳送一個訊息,多個監聽的客戶端都可以消費到訊息內容。而傳送一個訊息到Queue,只能一個監聽的客戶端可以消費。那麼,如果我有2個客戶端都去監聽同一個Queue,可以嗎?結果會怎麼樣?實際測試結果是逐一交叉監聽消費了訊息。這樣的情況,可以利用微服務➕MQ簡

flume-NG採用syslogtcp方式

一、採集說明 本採集方式使用socket通訊的方式,向flume傳送資料進行採集,採集後的資料儲存到hdfs和kafka。 二、配置檔案 1、source採集層 port.properties # set agent name agent.

修改WMB執行組

注:僅適用於修改HTTP監聽埠,HTTPS、SOAP並沒有修改 預設情況下MB的監聽級別是代理監聽級別,一個代理只監聽一個埠號,執行組中的訊息流通過具體的url來訪問。 如果你想監聽多個埠除了建立多個代理這種方法外還可以選擇為每個執行組指定監聽的埠,更節省資源。 1.檢視目