• asp.net socket多线程 简单监听端口,获得数据


    经过对上一篇文章,代码的二次开发得到了线面的这个方法

    public void CreatSocket()
        {
            try
            {
                int port = 2000;
                string host = "127.0.0.1";
    
                /**/
                ///创建终结点(EndPoint)
                IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
                IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例
    
                /**/
                ///创建socket并开始监听
                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
                s.Bind(ipe);//绑定EndPoint对像(2000端口和ip地址)
                s.Listen(0);//开始监听
                Console.WriteLine("等待客户端连接");
    
                /**/
                ///接受到client连接,为此连接建立新的socket,并接受信息
    
                while (true)//定义循环,以便可以简历N次连接
                {
                    Socket temp = s.Accept();//为新建连接创建新的socket
                    //Console.WriteLine("建立连接");
                    string recvStr = "";
                    byte[] recvBytes = new byte[1024];
                    int bytes;
                    bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
                    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                    DBHelper.ExecutCommand("INSERT INTO [ShuJu]([strs_VAR]) VALUES('" + recvStr + "')");//存入数据库
                    if (temp != null)
                        temp.Close();
    
                }
    
                /**/
                ///给client端返回信息
                //Console.WriteLine("server get message:{0}", recvStr);//把客户端传来的信息显示出来
                //string sendStr = "ok!Client send message successful!";
                //byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                //temp.Send(bs, bs.Length, 0);//返回信息给客户端
                //temp.Close();
                s.Close();
                //Console.ReadLine();
            }
            catch (Exception ex)
            {
                string s = ex.ToString();
            }
        }
    

    然后,我们定义在一个网站,中定义监听(Global.asax)

    void Application_Start(object sender, EventArgs e) 
        {
            // 在应用程序启动时运行的代码
            (new System.Threading.Thread(new System.Threading.ThreadStart( new Class1().CreatSocket))).Start();//开辟一个新线程
         }
    

    这样就可以啦!可以接受N次的连接啦!

    o(∩_∩)o

  • 相关阅读:
    不懂区块链?先来看一下这篇
    ZooKeeper 分布式共享锁的实现
    关于 use-default-filters 属性的说明
    MapReduce 入门之一步步自实现词频统计功能
    Spring、SpringMVC、SpringData + JPA 整合详解
    使用 Hadoop 进行语料处理(面试题)
    顺序线性表 ---- ArrayList 源码解析及实现原理分析
    JPA + SpringData 操作数据库 ---- 深入了解 SpringData
    JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
    JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
  • 原文地址:https://www.cnblogs.com/sh_yao/p/1891166.html
Copyright © 2020-2023  润新知