怎么使用socket在云服务上通信步骤(可支持TCP或UDP)
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)相关推荐
- [转]在 Azure 云服务上设计大规模服务的最佳实践
本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...
- azure mysql 配置,php-在Azure云服务上配置WordPress以通过SSL连接到Azure MySQL
我们在云服务上主要.NET解决方案的子文件夹中运行Wordpress.我们已经将MySQL从CloudDB移到了Azure MySQL,但是只有将"强制SSL连接"设置为禁用时,它 ...
- MAC 通过终端连接AWS云服务上的linux系统(Ubuntu)修改Html的标题
先看结果截图 作业完成要求:(个人作业仅供参考) 方法:MAC 通过终端 连接AWS云服务上的linux系统(Ubuntu)修改Html的标题(修改成自己的名字) 1.直接进入课程地址:https:/ ...
- frp实现花生壳+阿里云内网穿透,实现公有IP映射到本地(支持 TCP、UDP、HTTP、HTTPS 等多种协议)
简介: 一文搞懂frp内网穿透并搭建配置使用,Windows.Mac电脑远程链接! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内 ...
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
原标题:在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议) 原文: http://www.csdn.net/develop/read_article.as ...
- 云服务上搭建halo博客
废话不多说,直接上教程 想要了解更多有关halo博客的信息请访问官网:https://halo.run/ 本教程以 CentOS 7.x 为例,配置并运行 Halo,其他 Linux 发行版大同小异. ...
- socket编程之二:两种链接类型tcp和udp
前面一篇文章说到了一些计算机网络的基础知识.引入了socket.从这节開始,就进入正题了. 一 概述 TCP:Transimission Control Protocol传输控制协议. UPD:Use ...
- 关于c#,PHP socket挂到云服务器上之后本机无法连接的问题
最近写了下PHP socket编程,在本机测试一直没有问题,昨天放到云服务上之后,本机一直连接不上.但是同样的云服务器,用c#的socket监听同样的端口,本机可以连接,所以不是端口的问题.也没有一句 ...
- 华为云鲲鹏云服务抢占云上多元算力新赛道
2019年很快,一晃就到了年底.作为5G元年,从年初的兴奋.期盼,年底的一步步走近,5G变得越来越真实.与此同时,业界也慢慢形成一种共识:5G对企业的改变会大于对消费者的改变.也可以说,随着5G+ ...
最新文章
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 708-709: invalid continuation byte
- 算法 n个数字形成的圆圈中循环删除第m个数字 C++
- Gridview分页模板
- μCos-ii学习笔记1_概述
- [VSTO系列]三、简单的UI设计/QQ联系人导出(下)
- IO 模型知多少 | 代码篇
- SCVMM2008 R2 SP1 物理机实战P2V迁移主机 Step By Step.
- android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法
- 如何将JavaScript转化成Swift?(二)
- 谈谈写程序与学英语 --宋劲杉
- MySql中创建用户以及设置其操作权限
- 月入5000,你有什么资格谈生活
- LitePal数据存储
- Linux安装curl完整步骤
- 余沧海没有自知之明?
- java-老鼠出迷宫
- 虚幻4地形怎么增加层_腾讯首款虚幻4沙盘战略手游上线:全面3D化
- 盒子模型--标准盒模型和怪异盒模型
- C语言学习——fscanf()返回值
- 项目综合管理--项目章程和范围说明书
热门文章
- button url图片显示不出来_哼!Vue如何在图片上传前使用vue-cropper进行剪切
- gis环境设置在哪_三维GIS平台的可视化应用 (下)
- 打了断点为直接运行完_黑社会行为?男子驾校身亡,家属看现场被保安围殴,手臂被打断...
- HTML变列自适应布局三行,CSS三行三列DIV高度自适应的设置
- 树莓派kail linux安装wine,在ubuntu14.04中安装wine
- 服务器系统怎么分配,服务器系统盘分配多大内存
- keil5安装_keil5,软件安装包及安装教程
- ui设计现状与意义_想转行UI设计?你必须要了解以下内容
- 双目标帕累托优化_多目标稳健性决策规划(MORDM)
- 新手如何快速上手Linux,韦东山告诉你。