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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

在阿里云ECS上搭建Skynet服务器与Unity通信

發布時間:2024/1/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在阿里云ECS上搭建Skynet服务器与Unity通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在阿里云ECS上搭建Skynet服務器與Unity通信

    • 創建阿里云ECS實例
    • Skynet搭建
    • 服務端代碼部分
    • 客戶端部分(Unity)

創建阿里云ECS實例

這部分的話按照阿里云流程去做就可以了。也可以使用谷歌云或者其他的云VPS。

Skynet搭建

Ubuntu下的環境搭建(其他系統下并未嘗試):

  • 升級軟件源
  • sudo apt-get update

  • 安裝git
  • apt-get install git

  • clone Skynet到ECS上,我的安裝位置是在 /home/server下
  • git clone https://github.com/cloudwu/skynet.git

  • 安裝autoconf apt-get install libreadline-dev autoconf
  • apt-get install libreadline-dev autoconf

  • 編譯skynet
  • cd skynet
    make linux

    服務端代碼部分

  • 在skynet根目錄創建myServer文件
  • mkdir myServer

  • 創建3個文件 config main.lua socket.lua
  • touch config
    touch main.lua
    touch socket.lua

    config文件

    root = "./" thread = 8 logger = nil harbor = 1 address = "127.0.0.1:2526" master = "127.0.0.1:2013" start = "main" -- main script bootstrap = "snlua bootstrap" -- The service for bootstrap standalone = "0.0.0.0:2013" luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."myServer/?.lua" lualoader = "lualib/loader.lua" snax = root.."examples/?.lua;"..root.."test/?.lua" cpath = root.."cservice/?.so"

    main.lua文件

    local skynet = require "skynet"-- 啟動服務(啟動函數) skynet.start(function()-- 啟動函數里調用Skynet API開發各種服務print("======Server start=======")skynet.newservice("socket")skynet.exit() end)

    socket.lua 文件,此處特別注意監聽的ip必須是阿里云的私有ip,端口號需要在阿里云設置中進行開啟入規則端口

    local skynet = require "skynet" local socket = require "skynet.socket"-- 讀取客戶端數據, 并輸出 local function echo(id)-- 每當 accept 函數獲得一個新的 socket id 后,并不會立即收到這個 socket 上的數據。這是因為,我們有時會希望把這個 socket 的操作>權轉讓給別的服務去處理。-- 任何一個服務只有在調用 socket.start(id) 之后,才可以收到這個 socket 上的數據。socket.start(id)while true do -- 讀取客戶端發過來的數據 local str = socket.read(id)if str then -- 直接打印接收到的數據print(str)elsesocket.close(id)returnendend end skynet.start(function() print("==========Socket1 Start=========")-- 監聽一個端口,返回一個 id ,供 start 使用。local id = socket.listen("xxx.xx.xx.xxx", xxxx)print("Listen socket :", "xxx.xx.xx.xxx", xxxx)socket.start(id , function(id, addr)-- 接收到客戶端連接或發送消息()print("connect from " .. addr .. " " .. id)-- 處理接收到的消息echo(id)end)--可以為自己注冊一個別名。(別名必須在 32 個字符以內)-- skynet.register "SOCKET" end)

    這里很重要的一點是阿里云的ECS實例上的telnet是連接不通自己的回環地址127.0.0.1的
    必須安裝telnet的配置才能夠訪問。也就是說沒有安裝telnet外網也無法通過socket連接至阿里云上的服務器。

    sudo apt-get install xinetd telnetd
    vim /etc/inetd.conf

    telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

    vim /etc/xinetd.conf

    Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { # Please note that you need a log_type line to be able to use log_on_success # and log_on_failure. The default is the following : # log_type = SYSLOG daemon info instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 }

    sudo /etc/init.d/xinetd restart

    最后嘗試

    telnet 127.0.0.1

    出現則可以外網成功連接了。

    之后前往skynet根目錄創建bash文件run.sh

    touch run.sh

    #!/bin/bash./skynet ./myServer/config

    并且在根目錄

    sh run.sh

    開啟服務器監聽

    客戶端部分(Unity)

    創建一個C#腳本

    using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine;public class NetWorkScript : MonoBehaviour {private byte[] data = new byte[1024];private Socket clientSocket;private Thread receiveT;void Start (){ConnectToServer();}void ConnectToServer(){try{clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);clientSocket.Connect("xxx.xx.xx.xxx", xxxx);SendMes("hello world!");Debug.Log("連接服務器成功");receiveT = new Thread(ReceiveMsg);receiveT.Start();}catch (System.Exception ex){Debug.Log("連接服務器失敗!");Debug.Log(ex.Message);}}private void ReceiveMsg(){while (true){if (clientSocket.Connected == false){Debug.Log("與服務器斷開了連接");break;}int lenght = 0;lenght = clientSocket.Receive(data);string str = Encoding.UTF8.GetString(data, 0, data.Length);Debug.Log(str);}}void SendMes(string ms){byte[] data = new byte[1024];data = Encoding.UTF8.GetBytes(ms);clientSocket.Send(data);}void OnDestroy(){try{if (clientSocket != null){clientSocket.Shutdown(SocketShutdown.Both);clientSocket.Close();//關閉連接}if (receiveT != null){receiveT.Interrupt();receiveT.Abort();}}catch (Exception ex){Debug.Log(ex.Message);}} }

    掛載到隨便某個物體上,運行測試,這邊注意連接的ip是阿里云公網ip
    測試成功截圖:
    客戶端
    服務端

    總結

    以上是生活随笔為你收集整理的在阿里云ECS上搭建Skynet服务器与Unity通信的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 天天干天天操av | 日本成人免费观看 | 免费av导航 | 免费观看黄色网 | 亚洲欧美偷拍一区 | 高清中文字幕在线a片 | 色牛影院 | 大地资源中文第三页 | 91精品人妻互换一区二区 | 人人干人人干人人干 | 国产女主播一区二区 | 男生和女生一起差差差很痛的视频 | 青青草一区二区三区 | 啪啪免费网站 | 五月天男人天堂 | 人妻aⅴ无码一区二区三区 阿v免费视频 | 国产午夜激情 | 国产日韩视频一区 | 在线免费观看不卡av | 亚洲小说春色综合另类 | 日韩视频一区二区三区 | 青青草视频免费 | 二区国产 | 人人射人人插 | 欧美肥老妇 | 国产视频一级 | 国产精品第8页 | 插插插综合 | 18女人毛片 | 精品亚洲中文字幕 | 天天干天天操天天射 | 美国性生活大片 | 欧美a级成人淫片免费看 | 中文亚洲字幕 | 亚洲视频在线观看一区 | 亚洲中文字幕无码爆乳av | 亚洲aⅴ在线观看 | 九一国产在线观看 | 禁漫天堂黄漫画无遮挡观看 | 午夜寂寞自拍 | 亚洲涩情| 大陆一级片| 国产a网站 | 国产精品一二三区在线观看 | 国产a一级 | 男人的天堂a在线 | 日本熟妇人妻xxxxx | www欧美色 | 在线免费观看污 | 国产原创中文av | 久久夜色精品亚洲 | 精品久久免费 | 亚洲美女屁股眼交3 | 国产精品有限公司 | 超碰在线网站 | 91污网站 | 欧美做受高潮6 | 午夜黄色剧场 | 琪琪色av| 狠狠干网 | 美女视频毛片 | 欧美一区三区三区高中清蜜桃 | 91久久国产视频 | 日韩日韩日韩日韩日韩 | 欧美变态口味重另类在线视频 | 三级av在线免费观看 | 久久国产二区 | 久久久久久91亚洲精品中文字幕 | 国产白袜脚足j棉袜在线观看 | 美痴女~美人上司北岛玲 | 涩涩屋视频在线观看 | 性猛交╳xxx乱大交 偷偷操不一样的久久 | 蜜桃aaa| 人妖一区二区三区 | 国产123区在线观看 91国产一区二区 | 亚洲精品不卡 | 日韩操操操 | 欧美国产精品一区二区 | 艳妇乳肉豪妇荡乳av | 黄色一级大片免费版 | 美国特色黄a大片 | 免费大片在线观看www | 一区二区日本视频 | 亚洲四虎影院 | 国产性自拍| 国产成人午夜 | 精品国产三级 | 亚洲熟妇av一区二区三区漫画 | 在线观看国产一区 | 亚洲午夜福利一区二区三区 | 成人免费视频国产免费 | 国产一级大片在线观看 | 全黄毛片| 女生张开腿给男生桶 | 在线成人看片 | 麻豆精品国产传媒av绿帽社 | 国产精品国产精品 | 黑人无套内谢中国美女 | 精品国产乱码一区二区 |