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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么使用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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。