socket-WebSocket-HttpListener-TcpListener服务端客户端的具体使用案例
/// <summary>
/// 启动服务监听的ip和端口的主线程
/// </summary>
/// <param name="tunnelPort"></param>
public void StartService(int tunnelPort)
{
Port = tunnelPort;
Encoding = Encoding.UTF8;
ListeningThread = new Thread(new ThreadStart(StartListening));
ListeningThread.IsBackground = Environment.OSVersion.Platform != PlatformID.Unix;//
ListeningThread.Start();
}
internal void StartListening()
{
#region socket服务端
//int port = 1234;
//string host = "127.0.0.1";
//IPAddress ip = IPAddress.Parse(host);
//IPEndPoint ipe = new IPEndPoint(ip, port);
//Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//sSocket.Bind(ipe);
//sSocket.Listen(0);
//Console.WriteLine("监听已经打开,请等待");
////receive message
//Socket serverSocket = sSocket.Accept();
//Console.WriteLine("连接已经建立");
//string recStr = "";
//byte[] recByte = new byte[4096];
//int bytes = serverSocket.Receive(recByte, recByte.Length, 0);
//recStr += Encoding.ASCII.GetString(recByte, 0, bytes);
//////send message
//Console.WriteLine("服务器端获得信息:{0}", recStr);
//string sendStr = "send to client :hello";
//byte[] sendByte = Encoding.ASCII.GetBytes(recStr);
//serverSocket.Send(sendByte, sendByte.Length, 0);
//serverSocket.Close();
//sSocket.Close();
#endregion
#region socket客户端
//int port = 1234;
//string host = "127.0.0.1";//服务器端ip地址
//IPAddress ip = IPAddress.Parse(host);
//IPEndPoint ipe = new IPEndPoint(ip, port);
// Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//clientSocket.Connect(ipe);
////send message
//string sendStr = "begin#70";
//byte[] sendBytes = Encoding.ASCII.GetBytes(sendStr);
//clientSocket.Send(sendBytes);
////receive message
//string recStr = "";
//byte[] recBytes = new byte[4096];
//int bytes = clientSocket.Receive(recBytes, recBytes.Length, 0);
//recStr += Encoding.ASCII.GetString(recBytes, 0, bytes);
//Console.WriteLine(recStr);
//clientSocket.Close();
#endregion
#region Http服务端
//HttpListener listener = new HttpListener();
////listener.Prefixes.Add("http://*:8080/");
//listener.Prefixes.Add("http://+:" + 1234 + "/");
//listener.Start();
//while (true)
//{
// IAsyncResult result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
// result.AsyncWaitHandle.WaitOne();
//}
#endregion
#region Http客户端
//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();
#endregion
#region WebSocket服务端 4.0方式,不适合win7 系统,适合win8,win10 ,win server 2008,win server 2012等高版本系统
//HttpListener listener = new HttpListener();
////listener.Prefixes.Add("http://*:8080/");
//listener.Prefixes.Add("http://+:" + 1234 + "/");
//listener.Start();
//var context = listener.GetContextAsync();
//var wsContext = context.Result.AcceptWebSocketAsync("");
//var ws = wsContext.Result.WebSocket;
//接受客户端发来的消息
//处理客户端发来的消息,处理完成之后,发给客户端消息
#endregion
#region WebSocket客户端 4.0方式,不适合win7 系统,适合win8,win10 ,win server 2008,win server 2012等高版本系统
// string url = "ws://127.0.0.1:1234/";
// try
// {
// ClientWebSocket cln = new ClientWebSocket();
// cln.ConnectAsync(new Uri(url), new CancellationToken()).Wait();
// byte[] bytess = Encoding.Default.GetBytes("begin#70");
// cln.SendAsync(new ArraySegment<byte>(bytess), WebSocketMessageType.Text, true, new CancellationToken()).Wait();
// byte[] bytes2 = new byte[1000 * 500];
// //var webSocketReceiveResult = cln.ReceiveAsync(new ArraySegment<byte>(bytes2), CancellationToken.None);
// //GetAsyncValue(cln);//异步方法,很关键
// string returnValue = await GetAsyncValue(cln);//异步方法
// //string xx = Encoding.Default.GetString(bytes2);
// Console.Read();
// }
//catch
//{
// Thread.Sleep(1000);
//}
#endregion
#region Tcp服务端
//TcpListener tcpListener = null;
//int port = 22333;
//string host = "127.0.0.1";
//IPAddress ip = IPAddress.Parse(host);
//IPEndPoint ipe = new IPEndPoint(ip, port);
//tcpListener = new TcpListener(ipe);
//tcpListener.Start();
//try
//{
// Byte[] bytes = new Byte[1024];
// String data = null;
// while (true)
// {
// Console.Write("Waiting for a connection... ");
// TcpClient client = tcpListener.AcceptTcpClient();
// Console.WriteLine("Connected!");
// data = null;
#region MyRegion
//NetworkStream stream = client.GetStream();
//int i = stream.Read(bytes, 0, bytes.Length);
//data = Encoding.Default.GetString(bytes, 0, i);
//Console.WriteLine("Received: {0}", data);
//byte[] msg = Encoding.Default.GetBytes(data + "ok");
//stream.Write(msg, 0, msg.Length);
//Console.WriteLine("Sent: {0}", data);
#endregion
// NetworkStream stream = client.GetStream();
// int i;
// while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
// {
// data += Encoding.Default.GetString(bytes, 0, i);
// Console.WriteLine("Received: {0}", data);
// byte[] msg = Encoding.Default.GetBytes(data + "ok");
// stream.Write(msg, 0, msg.Length);
// Console.WriteLine("Sent: {0}", data);
// }
// client.Close();
// }
//}
//catch (Exception e)
//{
//}
#endregion
#region Tcp客户端
//TcpClient tcpClient = new TcpClient("127.0.0.1", 22333);
//NetworkStream stream = tcpClient.GetStream();
//byte[] seb = System.Text.Encoding.Default.GetBytes("222222222222");
//stream.Write(seb, 0, seb.Length);
//byte[] seb2 = new byte[1024];
//int xx = stream.Read(seb2, 0, seb2.Length);
//string returnValue = Encoding.Default.GetString(seb2, 0, xx);
//stream.Close();
//tcpClient.Close();
#endregion
}
internal void StartListening1()
{
TcpListener tcpListener = null;
int port = 22333;
string host = "127.0.0.1";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
tcpListener = new TcpListener(ipe);
tcpListener.Start();
try
{
Byte[] bytes = new Byte[1024];
String data = null;
while (true)
{
Console.Write("Waiting for a connection... ");
TcpClient client = tcpListener.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
NetworkStream stream = client.GetStream();
int i = stream.Read(bytes, 0, bytes.Length);
data = Encoding.Default.GetString(bytes, 0, i);
Console.WriteLine("Received: {0}", data);
byte[] msg = Encoding.Default.GetBytes(data + "ok");
stream.Write(msg, 0, msg.Length);
Console.WriteLine("Sent: {0}", data);
//while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
//{
// data += Encoding.Default.GetString(bytes, 0, i);
// Console.WriteLine("Received: {0}", data);
// byte[] msg = Encoding.Default.GetBytes(data + "ok");
// stream.Write(msg, 0, msg.Length);
// Console.WriteLine("Sent: {0}", data);
//}
client.Close();
}
}
catch (Exception e)
{
}
}
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
{
}
}
//异步方法
//public static async Task<string> GetAsyncValue(ClientWebSocket clientWebSocket)
//{
// string returnValue = null;
// ArraySegment<Byte> buffer = new ArraySegment<byte>(new Byte[8192]);
// WebSocketReceiveResult result = null;
// using (var ms = new MemoryStream())
// {
// do
// {
// result = await clientWebSocket.ReceiveAsync(buffer, CancellationToken.None);
// ms.Write(buffer.Array, buffer.Offset, result.Count);
// }
// while (!result.EndOfMessage);
// ms.Seek(0, SeekOrigin.Begin);
// if (result.MessageType == WebSocketMessageType.Text)
// {
// using (var reader = new StreamReader(ms, Encoding.UTF8))
// {
// returnValue = reader.ReadToEnd();
// //Console.WriteLine(returnValue);
// }
// }
// }
// return returnValue;
//}
socket-WebSocket-HttpListener-TcpListener服务端客户端的具体使用案例的更多相关文章
- socket-WebSocket HttpListener TcpListener 服务端客户端的具体使用案例
/// <summary>/// 启动服务监听的ip和端口的主线程/// </summary>/// <param name="tunnelPort" ...
- WebSocket——SuperWebSocket实现服务端和客户端
WebSocket——SuperWebSocket实现服务端和客户端具体实现如下: 注:本作者是基于vs2019 enterprise版本,所有项目均为.Net Framwork4.7版本(因为Web ...
- 客户端 new socket时候 就像服务端发起连接了
客户端 new socket时候 就像服务端发起连接了
- TCP Socket服务端客户端(二)
本文服务端客户端封装代码转自https://blog.csdn.net/zhujunxxxxx/article/details/44258719,并作了简单的修改. 1)服务端 此类主要处理服务端相关 ...
- PHP-Socket服务端客户端发送接收通信实例详解
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://fighter.blog.51cto.com/1318618/1533957 So ...
- TCP/IP网络编程之基于UDP的服务端/客户端
理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(二)
回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...
- 使用tomcat方式实现websocket即时通讯服务端讲解
使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...
随机推荐
- labelImg 工具
安装anaconda, 在anaconda prompt 下 执行 pyrcc4 -o resources.py resources.qrc python labelImg.py
- Nmap扫描基础常用命令(包含进阶使用)
Nmap扫描常用命令 - Nmap scans common commands 1.扫描单个目标 nmap ip 如:nmap 192.168.0.101 2.扫描多个目标 nmap ip1 ip2 ...
- char,wchar_t 长度
(测试环境:VC++6.0) char类型 wchar_t类型 类型大小(32位系统) 8位 16位 常量字符表示法 'A' L'A' 或 'A' 常量字符串表示法 'hello' L'hello' ...
- Food Log with Speech Recognition and NLP
1. 分词 word segmentation 国内有jieba 分词 2. Named Entity Recognition 训练自己的Model How can I train my own NE ...
- Ubuntu18.04安装搜狗拼音输入法皮肤透明解决方法
解决方法: 去搜狗输入法官网下载一个新的皮肤,然后右键用“搜狗输入法”打开,就解决了!!!
- Centos6.8 下解决服务器被挖矿当肉鸡的方法
刚上班发现有些服务跑不起来,进入服务器查看原因: 第一部分: 一,#top 因为是刚被我kill 掉一次,kill 掉等会还会自启动,之前yam 进程占cpu 是200% 二,# vim /etc/r ...
- mysql 查询优化 ~ 多表查询改写思路
一 简介:在之前我们从基础可知,现在咱们聊一下改写的几种思路二 分类: 1 left join 2 inner join 3 right join三 具体改写思路:思路1 本身不包含子查询,将多 ...
- Vue.js简单记录
官网:https://cn.vuejs.org/ https://cn.vuejs.org/v2/api/#methods v-bind 缩写 <!-- 完整语法 --> <a v- ...
- Android视频压缩
最推荐(使用方便,默认压缩为原来视频大小的1/4左右): https://blog.csdn.net/qq_35373333/article/details/79564991 https://git ...
- Nginx系列1:ubuntu16.04编译出适合自己的nginx服务器
1.下载nginx nginx官网:nginx.org tar.gz文件 解压缩命令: wget https://nginx.org/download/nginx-1.14.2.tar.gz #下载n ...