日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么使用socket在云服务上通信步骤(可支持TCP或UDP) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.購買云服務(wù)器,云服務(wù)器會分配給用戶一個公網(wǎng)IP,和自動分配的內(nèi)網(wǎng)IP,可在服務(wù)器管理配置中查看。

2.在云服務(wù)器上開發(fā)UDP或TCP地址和端口,這樣做目的是使防火墻允許客戶端的地址訪問云服務(wù)器,否則不能通信。

如騰訊云:在輕量應(yīng)用服務(wù)器-》服務(wù)器-》防火墻-》添加規(guī)則? ?

添加應(yīng)用類型為自定義,IP來源為客戶端地址IP(如任何類型),協(xié)議規(guī)則為UDP,端口為服務(wù)器接收端口即客戶端要發(fā)送數(shù)據(jù)到云服務(wù)器的端口,策略為允許。

3.服務(wù)器端使用云服務(wù)器上的內(nèi)網(wǎng)IP創(chuàng)建Socket套接字(UDP或TCP協(xié)議),客戶端連接和發(fā)送均使用云服務(wù)器的公網(wǎng)IP。

UDP實(shí)例

客戶端

public ?class UDPClient
? ? {
? ? ? ?
? ? ? ? private static Socket udpClient;
? ? ? ? public static EndPoint severEndPoint = new IPEndPoint(IPAddress.Parse("云服務(wù)器公網(wǎng)IP"), 60000);
? ? ? ? public void CreateUDPClient()
? ? ? ? {
? ? ? ? ? ? //1,創(chuàng)建socket
? ? ? ? ? ? udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
? ? ? ? ? ? //2,綁定ip跟端口號
? ? ? ? ? ? udpClient.Bind(new IPEndPoint(IPAddress.Any, 60001));

? ? ? ? ? ? //3,接收數(shù)據(jù)
? ? ? ? ? ? new Thread(ReceiveMessage) { IsBackground = true }.Start();
? ? ? ? ? ? Console.WriteLine("服務(wù)器啟動...");

? ? ? ? }

? ? ? ? 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);//這個方法會把數(shù)據(jù)的來源(ip:port)放到第二個參數(shù)上
? ? ? ? ? ? ? ? string message = Encoding.UTF8.GetString(data, 0, length); ? ?
? ? ? ? ? ? ? ? MessageBox.Show("從ip:" + (remoteEndPoint as IPEndPoint).Address.ToString() + ":" + (remoteEndPoint as IPEndPoint).Port + "收到了數(shù)據(jù):" + message);
? ? ? ? ? ? }

? ? ? ? }
? ? }

服務(wù)器

? public ? class UDPServer
? ? {
? ? ? private static Socket udpServer;
? ? ? public EndPoint clientPoint;
? ? ? public ?void CreateUDPServer()
? ? ? {
? ? ? ? ? try
? ? ? ? ? {
? ? ? ? ? ? ? //1,創(chuàng)建socket
? ? ? ? ? ? ? udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
? ? ? ? ? ? ? //2,綁定ip跟端口號
? ? ? ? ? ? ? udpServer.Bind(new IPEndPoint(IPAddress.Parse("云服務(wù)器內(nèi)網(wǎng)IP"), 60000));

? ? ? ? ? ? ? //3,接收數(shù)據(jù)
? ? ? ? ? ? ? new Thread(ReceiveMessage) { IsBackground = true }.Start();
? ? ? ? ? ? ? MessageBox.Show("服務(wù)器啟動...");

? ? ? ? ? }
? ? ? ? ? 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);//這個方法會把數(shù)據(jù)的來源(ip:port)放到第二個參數(shù)上
? ? ? ? ? ? ? ? string message = Encoding.UTF8.GetString(data, 0, length);
? ? ? ? ? ? ? ? SendInfo(remoteEndPoint);
? ? ? ? ? ? ? ? clientPoint = remoteEndPoint;
? ? ? ? ? ? ? ? MessageBox.Show("從ip:" + (remoteEndPoint as IPEndPoint).Address.ToString() + ":" + (remoteEndPoint as IPEndPoint).Port + "收到了數(shù)據(jù):" + message);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? ? ?catch(Exception ee)
? ? ? ? {
? ? ? ? ? ? MessageBox.Show(ee.ToString());
? ? ? ? }

? ? }


? ? }

總結(jié)

以上是生活随笔為你收集整理的怎么使用socket在云服务上通信步骤(可支持TCP或UDP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。