zoukankan      html  css  js  c++  java
  • C#-Socket(TCP)

    //提示,线程里面不要给控件赋值
    
    
     LinkSocket.Send(result, length, 0);
    
    自己挂起 
    private void button1_Click(object sender, EventArgs e)
     {
          bool ok = guaqi(IPAddress.Parse(rip.Text) ,int.Parse (rpont .Text ));
          if (ok)
          {
                 richTextBox1.Text = "挂起成功!";
                 jiantingkehuduan();//监听
           }
           else richTextBox1.Text = "挂起失败";
    }
    
    连接别人
    private void button2_Click(object sender, EventArgs e)
    {
        bool ok = Link (IPAddress.Parse(rip.Text), int.Parse(rpont.Text));
        if (ok)
        {
           richTextBox1.Text = "连接成功!";
           clientSocket.Send(Encoding.UTF8.GetBytes("aaaaa"));
        }
        else richTextBox1.Text = "连接失败";
    } 
    
    
     //CS************************************************
     //定义
     public int Pont;//端口
     public IPAddress Ip;//ip
     public Socket MySocket;//定义一个套接字
    
    //挂起socket
    public bool guaqi(IPAddress ip, int pont)
    {
        try //挂起socket,可以根据这个地方try一下判断启动服务器是否成功
        {
            Pont = pont;
            Ip = ip;
            MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            MySocket.Bind(new IPEndPoint(Ip, Pont));
            MySocket.Listen(30);//最多监听30个
            return true;//挂起成功
        }
        catch
        {
            return false;//挂起失败
        }
    }
    
    //监听客户端
    public void jiantingkehuduan()
    {
          Thread myThread = new Thread(listen);
          myThread.IsBackground = true;
          myThread.Start();
    }
    //监听函数
    public void listen()
    {
          while (true)
          {
               Socket now = MySocket.Accept();//监听到的这个赋值在p1ser..上
               //每接收到一个连接就给他开一个单独的send便于交流
               Thread tt = new Thread(send);//send是接收并发送消息
               tt.IsBackground = true;
               tt.Start(now);//建立一个和p1一起的发送接受线程
           }
    }
           
    //send//接收和发送消息
    public void send(object clientSocket)
    {
         Socket nowsocket = (Socket)clientSocket;
         byte[] result = new byte[1024];
         while (true)//一直和p1保持联系
         {
              try //可以try一下,catch的时候就是对方下线或者故障了 
              {
                       
                 //接收******************
                 int len = nowsocket.Receive(result);//接收消息,并且存在result里
                 string tmp = Encoding.UTF8.GetString(result, 0, len);
                 //可以用if(tmp=="")来判断干什么 
                 //发送**************
                 //nowsocket.Send(Encoding.UTF8.GetBytes("aaaaa"));
               }
               catch
               {
                        return; //连接断开
               }
        }
    }
    
    //连接
    Socket clientSocket;
    public bool Link(IPAddress ip, int pont)
    {
        clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        try
        {
            clientSocket.Connect(new IPEndPoint(ip, pont));
            //int len = clientSocket.Receive(result);
            //string tmp = Encoding.UTF8.GetString(result, 0, len);
            return true;
        }
        catch
        {
              return false;
        }
    }

  • 相关阅读:
    Go-常量-const
    centos-安装python3.6环境并配置虚拟环境
    centos-环境变量配置
    linux_命令格式和命令提示符
    linux_基础调优
    使用 Docker 容器应该避免的 10 个事情
    Linux--多网卡的7种Bond模式和交换机配置
    《Linux内核精髓:精通Linux内核必会的75个绝技》目录
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #21FUSE
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #20 使用fio进行I/O的基准测试
  • 原文地址:https://www.cnblogs.com/csnd/p/12062153.html
Copyright © 2011-2022 走看看