zoukankan      html  css  js  c++  java
  • C# socket TCP 通信

    Server:

    void Main()
    {
        var maxWaitingRequest = 10;
        var localSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        localSocket.Bind(new IPEndPoint(IPAddress.Any, 40000));
        localSocket.Listen(maxWaitingRequest);
        while (true)
        {
            var remoteSocket = localSocket.Accept();
            var remoteIP = (IPEndPoint)remoteSocket.RemoteEndPoint;
            Console.WriteLine("A new connection from {0}:{1} at {2}", remoteIP.Address.ToString(), remoteIP.Port.ToString(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            ThreadPool.QueueUserWorkItem(acceptedConnectionHandler, remoteSocket);
        }
    }
    
    static void acceptedConnectionHandler(object p)
    {
        var remoteSocket = (Socket)p;
        remoteSocket.Send(System.Text.Encoding.Default.GetBytes("Hi client!"));
        
        var data = new List<byte>();
        var dataBlock = new byte[1024];
        while (true)
        {
            var read = remoteSocket.Receive(dataBlock);
            data.AddRange(dataBlock.Take(read));
            if (read <= dataBlock.Length && data.Count > 0)
            {
                Console.WriteLine(System.Text.Encoding.Default.GetString(data.ToArray()));
                data.Clear();
            }
        }
    }

    Client:

    void Main()
    {
        var localSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        var localEP = new IPEndPoint(IPAddress.Any, 20000);
        localSocket.Bind(localEP);
        localSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 40000));
        ThreadPool.QueueUserWorkItem(connectedConnectionHandler,localSocket);
        while(true)
            Thread.Sleep(100);
    }
    
    public static void connectedConnectionHandler(object p)
    {
        var localSocket = (Socket)p;
        var data = new List<byte>();
        var dataBlock = new byte[1024];
        while (true)
        {
            var read = localSocket.Receive(dataBlock);
            data.AddRange(dataBlock.Take(read));
            if (read <= dataBlock.Length && data.Count > 0)
            {
                Console.WriteLine(System.Text.Encoding.Default.GetString(data.ToArray()));
                data.Clear();
                localSocket.Send(System.Text.Encoding.Default.GetBytes("Hi server!"));
            }
        }
    }
  • 相关阅读:
    第一个驱动
    call Eip 技巧
    Win32 XP 下和WIN7下获取Kernel32基址的方法
    利用伪造内核文件来绕过IceSword的检测
    HOOK IDT (1)第一种方法,Int 0x2e
    壳的编写 :【统一节区粒度】
    壳的编写 【文件打开选择对话框】
    71币值转换
    71打印沙漏
    介绍自己
  • 原文地址:https://www.cnblogs.com/nanfei/p/14115747.html
Copyright © 2011-2022 走看看