1.购买云服务器,云服务器会分配给用户一个公网IP,和自动分配的内网IP,可在服务器管理配置中查看。

2.在云服务器上开发UDP或TCP地址和端口,这样做目的是使防火墙允许客户端的地址访问云服务器,否则不能通信。

如腾讯云:在轻量应用服务器-》服务器-》防火墙-》添加规则

添加应用类型为自定义,IP来源为客户端地址IP(如任何类型),协议规则为UDP,端口为服务器接收端口即客户端要发送数据到云服务器的端口,策略为允许。

3.服务器端使用云服务器上的内网IP创建Socket套接字(UDP或TCP协议),客户端连接和发送均使用云服务器的公网IP。

UDP实例

客户端

public  class UDPClient
    {
       
        private static Socket udpClient;
        public static EndPoint severEndPoint = new IPEndPoint(IPAddress.Parse("云服务器公网IP"), 60000);
        public void CreateUDPClient()
        {
            //1,创建socket
            udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            //2,绑定ip跟端口号
            udpClient.Bind(new IPEndPoint(IPAddress.Any, 60001));

//3,接收数据
            new Thread(ReceiveMessage) { IsBackground = true }.Start();
            Console.WriteLine("服务器启动...");

}

public  void SendInfo(string content)
        {
            byte[] data = Encoding.UTF8.GetBytes(content);
            udpClient.SendTo(data, severEndPoint);
        }
         void ReceiveMessage()
        {
            while (true)
            {
                EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
                byte[] data = new byte[1024];
                int length = udpClient.ReceiveFrom(data, ref remoteEndPoint);//这个方法会把数据的来源(ip:port)放到第二个参数上
                string message = Encoding.UTF8.GetString(data, 0, length);    
                MessageBox.Show("从ip:" + (remoteEndPoint as IPEndPoint).Address.ToString() + ":" + (remoteEndPoint as IPEndPoint).Port + "收到了数据:" + message);
            }

}
    }

服务器

public   class UDPServer
    {
      private static Socket udpServer;
      public EndPoint clientPoint;
      public  void CreateUDPServer()
      {
          try
          {
              //1,创建socket
              udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
              //2,绑定ip跟端口号
              udpServer.Bind(new IPEndPoint(IPAddress.Parse("云服务器内网IP"), 60000));

//3,接收数据
              new Thread(ReceiveMessage) { IsBackground = true }.Start();
              MessageBox.Show("服务器启动...");

}
          catch(Exception ee)
          {
              MessageBox.Show(ee.ToString());
          }
      }

public  void SendInfo(EndPoint client)
      {
          try
          {
              udpServer.SendTo(new byte[] { 0x11, 0x22 }, client);
          }
          catch (Exception ee)
          {
              MessageBox.Show(ee.ToString());
          }
      }
      public void SendInfo(string content)
      {
          try
          {
              byte[] data = Encoding.UTF8.GetBytes(content);
              udpServer.SendTo(data, clientPoint);
          }
          catch(Exception ee)
          {
              MessageBox.Show(ee.ToString());
          }
      }
       void ReceiveMessage()
    {
        try
        {
            while (true)
            {
                EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
                byte[] data = new byte[1024];
                int length = udpServer.ReceiveFrom(data, ref remoteEndPoint);//这个方法会把数据的来源(ip:port)放到第二个参数上
                string message = Encoding.UTF8.GetString(data, 0, length);
                SendInfo(remoteEndPoint);
                clientPoint = remoteEndPoint;
                MessageBox.Show("从ip:" + (remoteEndPoint as IPEndPoint).Address.ToString() + ":" + (remoteEndPoint as IPEndPoint).Port + "收到了数据:" + message);
            }
        }
           catch(Exception ee)
        {
            MessageBox.Show(ee.ToString());
        }

}

}

怎么使用socket在云服务上通信步骤(可支持TCP或UDP)相关推荐

  1. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  2. azure mysql 配置,php-在Azure云服务上配置WordPress以通过SSL连接到Azure MySQL

    我们在云服务上主要.NET解决方案的子文件夹中运行Wordpress.我们已经将MySQL从CloudDB移到了Azure MySQL,但是只有将"强制SSL连接"设置为禁用时,它 ...

  3. MAC 通过终端连接AWS云服务上的linux系统(Ubuntu)修改Html的标题

    先看结果截图 作业完成要求:(个人作业仅供参考) 方法:MAC 通过终端 连接AWS云服务上的linux系统(Ubuntu)修改Html的标题(修改成自己的名字) 1.直接进入课程地址:https:/ ...

  4. frp实现花生壳+阿里云内网穿透,实现公有IP映射到本地(支持 TCP、UDP、HTTP、HTTPS 等多种协议)

    简介: 一文搞懂frp内网穿透并搭建配置使用,Windows.Mac电脑远程链接! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内 ...

  5. 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)

    原标题:在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议) 原文:  http://www.csdn.net/develop/read_article.as ...

  6. 云服务上搭建halo博客

    废话不多说,直接上教程 想要了解更多有关halo博客的信息请访问官网:https://halo.run/ 本教程以 CentOS 7.x 为例,配置并运行 Halo,其他 Linux 发行版大同小异. ...

  7. socket编程之二:两种链接类型tcp和udp

    前面一篇文章说到了一些计算机网络的基础知识.引入了socket.从这节開始,就进入正题了. 一 概述 TCP:Transimission Control Protocol传输控制协议. UPD:Use ...

  8. 关于c#,PHP socket挂到云服务器上之后本机无法连接的问题

    最近写了下PHP socket编程,在本机测试一直没有问题,昨天放到云服务上之后,本机一直连接不上.但是同样的云服务器,用c#的socket监听同样的端口,本机可以连接,所以不是端口的问题.也没有一句 ...

  9. 华为云鲲鹏云服务抢占云上多元算力新赛道

    ​ 2019年很快,一晃就到了年底.作为5G元年,从年初的兴奋.期盼,年底的一步步走近,5G变得越来越真实.与此同时,业界也慢慢形成一种共识:5G对企业的改变会大于对消费者的改变.也可以说,随着5G+ ...

最新文章

  1. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 708-709: invalid continuation byte
  2. 算法 n个数字形成的圆圈中循环删除第m个数字 C++
  3. Gridview分页模板
  4. μCos-ii学习笔记1_概述
  5. [VSTO系列]三、简单的UI设计/QQ联系人导出(下)
  6. IO 模型知多少 | 代码篇
  7. SCVMM2008 R2 SP1 物理机实战P2V迁移主机 Step By Step.
  8. android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法
  9. 如何将JavaScript转化成Swift?(二)
  10. 谈谈写程序与学英语 --宋劲杉
  11. MySql中创建用户以及设置其操作权限
  12. 月入5000,你有什么资格谈生活
  13. LitePal数据存储
  14. Linux安装curl完整步骤
  15. 余沧海没有自知之明?
  16. java-老鼠出迷宫
  17. 虚幻4地形怎么增加层_腾讯首款虚幻4沙盘战略手游上线:全面3D化
  18. 盒子模型--标准盒模型和怪异盒模型
  19. C语言学习——fscanf()返回值
  20. 项目综合管理--项目章程和范围说明书

热门文章

  1. button url图片显示不出来_哼!Vue如何在图片上传前使用vue-cropper进行剪切
  2. gis环境设置在哪_三维GIS平台的可视化应用 (下)
  3. 打了断点为直接运行完_黑社会行为?男子驾校身亡,家属看现场被保安围殴,手臂被打断...
  4. HTML变列自适应布局三行,CSS三行三列DIV高度自适应的设置
  5. 树莓派kail linux安装wine,在ubuntu14.04中安装wine
  6. 服务器系统怎么分配,服务器系统盘分配多大内存
  7. keil5安装_keil5,软件安装包及安装教程
  8. ui设计现状与意义_想转行UI设计?你必须要了解以下内容
  9. 双目标帕累托优化_多目标稳健性决策规划(MORDM)
  10. 新手如何快速上手Linux,韦东山告诉你。