1、创建WindowsService,如下代码

using System;
using System.Net;
using System.Net.Sockets;
using System.ServiceProcess;
using System.Text;
using System.Threading;

namespace WindowsService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}

public static int TerminalPort = 12800;
public static Thread ListeningThread;
public static int Port;
public static Encoding Encoding;

protected override void OnStart(string[] args)
{
InitialAcceptor(TerminalPort);
}

protected override void OnStop()
{
}

public void DebugTest()
{
Console.WriteLine("StartService...");
InitialAcceptor(TerminalPort);
Console.WriteLine("Terminal Listened on Port=" + TerminalPort);
}

public void InitialAcceptor(int tunnelPort)
{
Port = tunnelPort;

Encoding = Encoding.UTF8;

ListeningThread = new Thread(new ThreadStart(StartListening));

ListeningThread.IsBackground = Environment.OSVersion.Platform != PlatformID.Unix;//
ListeningThread.Start();

}

#region MyRegion
//internal void StartListening()
//{
// try
// {
// while (true)
// {
// try
// {
// listener = new HttpListener();
// listener.Prefixes.Add("http://+:" + Port + "/");
// listener.Start();
// }
// catch
// {
// Thread.Sleep(1000);
// }

// try
// {
// while (true)
// {
// IAsyncResult result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
// result.AsyncWaitHandle.WaitOne();
// }
// }
// catch (Exception e)
// {
// }
// }
// }
// catch
// {
// }
//}
#endregion
internal void StartListening()
{
try
{
while (true)
{
try
{
#region MyRegion
//服务端:
//var listener = new HttpListener();
//listener.Prefixes.Add("http://*:8080/");
//listener.Start();

HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://+:" + 1234 + "/");
listener.Start();

while (true)
{
IAsyncResult result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
result.AsyncWaitHandle.WaitOne();
}
#endregion
}
catch
{
Thread.Sleep(1000);
}
}
}
catch
{
}
}
private void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
HttpListenerContext context = listener.EndGetContext(result);
processRequest(context);

}

private void processRequest(HttpListenerContext context)
{
HttpListenerRequest request = context.Request;
try
{
//string url = System.Web.HttpUtility.UrlDecode(request.RawUrl);
string ss = request.QueryString["eid"];
context.Response.ContentEncoding = UTF8Encoding.UTF8;
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
//context.Response.ContentType = "image/jpg";
//context.Response.ContentLength64 = buffer.Length;
var output = context.Response.OutputStream;
byte[] nn = System.Text.Encoding.Default.GetBytes("qqqqqqqqqqqq");
output.Write(nn, 0, nn.Length);
output.Close();
}
catch (Exception e)
{

}
finally
{
}
}

}
}

2、创建控制台,测试启动WindowsService服务

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using WindowsService;

namespace WindowsService1TestConsole
{
class Program
{
static void Main(string[] args)
{
try
{
Service1 service1 = new Service1();
#if DEBUG
service1.DebugTest();
#endif
Thread.CurrentThread.IsBackground = false;
Thread.Sleep(Timeout.Infinite);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.Source);
Console.WriteLine(e.StackTrace);
Console.WriteLine(e.InnerException != null ? e.InnerException.ToString() : "");
Console.ReadLine();
}
}

}
}

3、测试http请求

直接 地址栏输入:http://127.0.0.1:1234/?eid=30

结果:qqqqqqqqqqqq

写测试代码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();//返回结果
myStreamReader.Close();
myResponseStream.Close();

HttpListener通讯成功案例的更多相关文章

  1. Socket通讯成功案例

    Socket通讯案例 #region 服务端 //int port = 1234; //string host = "127.0.0.1"; //IPAddress ip = IP ...

  2. 【即时通讯】即时通讯及XMPP概述及…

    在讲解XMPP前,我们需要先了解什么是即时通讯技术: * 即时通讯技术(IM - InstantMessaging)支持用户在线实时交谈.当一方需要发送消息时,用户必须打开一个窗口,以便让用户与交流对 ...

  3. thrift实现js与C#通讯

    利用thrift实现js与C#通讯的实例代码 1.为什么要用thrift js C#? 1.1 首先,js 通过 thrift 访问C#,实际上是一种c/s模式.thrift是通信工具,js是客户端, ...

  4. 细说Web页面与本地电脑通讯

    话说在很久很久以前.Web页面与客户的本地电脑Localhost通讯,有两种方式: 1.Flash 2.ActiveX控件 由于Flash本人不是很了解,也给出不了什么示例代码, 对于ActiveX控 ...

  5. Android HTTP通讯

    这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开. 先贴代码: 01 public class Activity1 extends Activity { 02   03     private ...

  6. 简单搭建http服务器-HttpListener使用

    使用HTTPListener可以简单搭建一个Http服务器,对于本地使用很是方面,想起之前使用了WebSocket来与本地网页通讯的例子,也是可以改为使用HTTPListener来做的.看下HTTPL ...

  7. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  8. (转)利用libcurl和国内著名的两个物联网云端通讯的例程, ubuntu和openwrt下调试成功(四)

    1. libcurl 的参考文档如下 CURLOPT_HEADERFUNCTION Pass a pointer to a function that matches the following pr ...

  9. (转)linux下和云端通讯的例程, ubuntu和openwrt下实验成功(二)

    前言: 上节用纯linux的函数实现了和云端通讯, 本节开始利用传说中的神器libcurl 话说一个网络程序员对书法十分感兴趣,退休后决定在这方面有所建树. 于是花重金购买了上等的文房四宝.    一 ...

随机推荐

  1. 符号执行-基于python的二进制分析框架angr

    转载:All Right 符号执行概述 在学习这个框架之前首先要知道符号执行.符号执行技术使用符号值代替数字值执行程序,得到的变量的值是由输入变 量的符号值和常量组成的表达式.符号执行技术首先由Kin ...

  2. 利用PHP连接数据库——实现用户登录注册功能以及管理员对用户注册的审核功能

    1.用户注册页面 页面效果: 代码如下: <!DOCTYPE html><html>    <head>        <meta charset=" ...

  3. Linux 文件删除 提示 Operation not permitted

     Linux  删除 隐藏文件提示 Operation not permitted ? linux  删除 隐藏文件 提示  Operation not permitted  不允许操作? 使用 ls ...

  4. A - 签到题

    给定一个长度为N的数组A=[A1, A2, ... AN],已知其中每个元素Ai的值都只可能是1, 2或者3. 请求出有多少下标三元组(i, j, k)满足1 ≤ i < j < k ≤ ...

  5. cocos 自动内存管理分析

    #include "CCAutoreleasePool.h" #include "ccMacros.h" NS_CC_BEGIN static CCPoolMa ...

  6. LOJ #2542「PKUWC2018」随机游走

    $ Min$-$Max$容斥真好用 $ PKUWC$滚粗后这题一直在$ todolist$里 今天才补掉..还要更加努力啊.. LOJ #2542 题意:给一棵不超过$ 18$个节点的树,$ 5000 ...

  7. chrome调试技巧和插件介绍

    14 个你可能不知道的 JavaScript 调试技巧 五种前端开发必备的调试技术 日志的艺术 吐血推荐珍藏的Chrome插件 吐血推荐珍藏的 Chrome 插件(二)

  8. hibernate多表操作

    一.表之间的关系 1.一对一 2.一对多 3.多对多 二.表之间关系建表原则 1.一对多:在多的一方创建一个外键,指向一的一方的主键 2.多对多:创建一个中间表,中间表至少有两个字段,分别作为外键指向 ...

  9. netty长链接保存方案

    架构 client router server zk redis 对于router: 保存客户端和服务器对 redis clientid : serverip & port 对于server ...

  10. 下面那些是无效的Java标识符?

    下面那些是无效的Java标识符?为什么? a.RESULT b.result c.12345 d.x12345y e.black&white f.answer_7 c和e是无效的,因为标识符不 ...