zoukankan      html  css  js  c++  java
  • 快速理解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

  • 相关阅读:
    第七次作业
    Beta敏捷冲刺每日报告——Day5
    Beta敏捷冲刺每日报告——Day4
    Beta敏捷冲刺每日报告——Day3
    Beta敏捷冲刺每日报告——Day2
    Beta敏捷冲刺每日报告——Day1
    MyGod--Beta版本前期报告
    第六次作业
    游标的使用
    Hadoop科普文——常见的45个问题解答
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2834396.html
Copyright © 2011-2022 走看看