• 快速理解socket


    貌似n久前写过一篇, 人的忘性太大了, 再来个入门的

    通俗的理解socket就是ip和端口的组合.  所以你看到定义一个socket的方式就是:

    int port = 2000;
    string host = "127.0.0.1";
    IPAddress ip = IPAddress.Parse(host);
    IPEndPoint ipe = new IPEndPoint(ip, port);
    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
    s.Bind(ipe);//绑定2000端口

    知道了socket的意思之后, 直接看例子, 新建两个控制台项目

    //server
    static void Main(string[] args)
            {
                try
                {
                    int port = 2000;
                    string host = "127.0.0.1";
                    IPAddress ip = IPAddress.Parse(host);
                    IPEndPoint ipe = new IPEndPoint(ip, port);
                    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
                    s.Bind(ipe);//绑定2000端口
                    s.Listen(0);//开始监听
                    Console.WriteLine("Wait for connect");
                    Socket temp = s.Accept();//为新建连接创建新的Socket。
                    Console.WriteLine("Get a connect");
                    string recvStr = "";
                    byte[] recvBytes = new byte[1024];
                    int bytes;
                    bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
                    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                    Console.WriteLine("Server Get Message:{0}", recvStr);//把客户端传来的信息显示出来
                    string sendStr = "Ok!Client Send Message Sucessful!";
                    byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                    temp.Send(bs, bs.Length, 0);//返回客户端成功信息
                    temp.Close();
                    s.Close();
                }
                catch (ArgumentNullException e)
                {
                    Console.WriteLine("ArgumentNullException: {0}", e);
                }
                catch (SocketException e)
                {
                    Console.WriteLine("SocketException: {0}", e);
                }
                Console.WriteLine("Press Enter to Exit");
                Console.ReadLine();
            }
    //客户端
    static void Main(string[] args)
            {
                try
                {
                    int port = 2000;
                    string host = "127.0.0.1";
                    IPAddress ip = IPAddress.Parse(host);
                    IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例
                    Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
                    Console.WriteLine("Conneting...");
                    c.Connect(ipe);//连接到服务器
                    string sendStr = "hello!This is a socket test";
                    byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                    Console.WriteLine("Send Message");
                    c.Send(bs, bs.Length, 0);//发送测试信息
                    string recvStr = "";
                    byte[] recvBytes = new byte[1024];
                    int bytes;
                    bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
                    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                    Console.WriteLine("Client Get Message:{0}", recvStr);//显示服务器返回信息
                    c.Close();
                }
                catch (ArgumentNullException e)
                {
                    Console.WriteLine("ArgumentNullException: {0}", e);
                }
                catch (SocketException e)
                {
                    Console.WriteLine("SocketException: {0}", e);
                }
                Console.WriteLine("Press Enter to Exit");
                Console.ReadLine();
            }

    image

  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2834396.html
Copyright © 2020-2023  润新知