• socket通讯


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

    namespace WebSocketTest
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine("start....");
    //var server = new WebSocet();
    //server.StartAccept(socket =>
    // {
    // socket.OnOpen = () => Console.WriteLine("Open!");
    // socket.OnClose = () => Console.WriteLine("Close!");
    // socket.OnMessage = message => socket.Send(message);
    // });


    //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(sendStr);
    //serverSocket.Send(sendByte, sendByte.Length, 0);
    //serverSocket.Close();
    //sSocket.Close();

    //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();

    ////服务端:
    //var listener = new HttpListener();
    //listener.Prefixes.Add("http://*:8080/");
    //listener.Start();
    //var context = listener.GetContextAsync();
    //var wsContext = context.Result.AcceptWebSocketAsync("");
    //var ws = wsContext.Result.WebSocket;
    ////客户端:
    //var cln = new ClientWebSocket();
    //cln.ConnectAsync(new Uri("ws://127.0.0.1:8080"), CancellationToken.None);

    //4.0方式
    string url = "ws://192.168.16.134: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);
    webSocketReceiveResult.GetAwaiter().GetResult();
    Thread.Sleep(10000);

    if (webSocketReceiveResult.IsCompleted)
    {
    //Console.WriteLine(webSocketReceiveResult.Result.));
    string xx = Encoding.GetEncoding("utf-8").GetString(bytes2, 0, webSocketReceiveResult.Result.Count);
    Console.WriteLine(xx);
    }
    //string xx = Encoding.Default.GetString(bytes2);
    Console.WriteLine("11111111111");

    }
    catch (Exception ex)
    {
    string ss = ex.ToString();
    Console.WriteLine(ss);
    //}
    Console.Read();
    }
    }
    // 服务端:
    //var listener = new HttpListener();
    // listener.Prefixes.Add("http://*:8080/");
    //listener.Start();
    //var context = await listener.GetContextAsync();
    //var wsContext = await context.AcceptWebSocketAsync(null);
    //var ws = wsContext.WebSocket;
    // 客户端:
    //var ws = new ClientWebSocket();
    //await ws.ConnectAsync(new Uri("ws://127.0.0.1:8080"), CancellationToken.None);

    #region MyRegion
    // 1. 使用.NET4.5 自带的WebSocket
    //服务端:
    //var listener = new HttpListener();
    // listener.Prefixes.Add("http://*:8080/");
    //listener.Start();
    //var context = await listener.GetContextAsync();
    // var wsContext = await context.AcceptWebSocketAsync(null);
    // var ws = wsContext.WebSocket;
    // 客户端:
    //var ws = new ClientWebSocket();
    // await ws.ConnectAsync(new Uri("ws://127.0.0.1:8080"), CancellationToken.None);

    //2. 使用 websocket-sharp dll提供的 WebSocket(支持.NET4.0)
    //客户端:

    //_caiNiaoWs = new WebSocket(WsUrl);
    // _caiNiaoWs.OnMessage += (sender, e) => OnMessage(e.Data);
    // _caiNiaoWs.Connect();

    // 3. 使用 Socket 类(支持.NET4.0)
    //http://blog.csdn.net/qq_29701359/article/details/53130050
    #endregion
    }
    }

  • 相关阅读:
    基础Linux命令总结
    [博客美化]新年啦,给自己博客加个雪花效果吧~
    自制操作系统Antz(5)——深入理解保护模式与进入方法
    自制操作系统Antz(4)——进入保护模式 (下) 实现内核并从硬盘载入
    自制操作系统Antz(3)——进入保护模式 (中) 直接操作显存
    自制操作系统Antz(2)——进入保护模式 (上) jmp到保护模式
    自制操作系统Antz(1)——Boot Sector
    Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云
    Kali Day01 --- arpspoof命令进行断网攻击(ARP欺骗)
    手写杀毒软件——放心的安全卫士
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/9874858.html
Copyright © 2020-2023  润新知