========== 本文開始 ==========
其實不管是client端或server端
在網路google搜尋一下就可以找到很多範例
但是有部分細節跟問題不容易找不太到
所以這篇會提及幾個我在實作上碰到的細節跟問題
還有大致的解決方法
========== Client端使用Socket異步收送資料的基本流程 ==========
1. 先寫一個ClientScoket.cs在遊戲系統初始化時跟著一起初始化
{
// 各系統的初始化...
ClientScoket.Instance.init();
}
2. 在遊戲登入步驟, 建立1個Socket,並連線到Server端
3.啟動對Server端封包的監聽(連線成功後啟動, 失敗的話看要重連還是怎麼處理)
public bool Connect(string ip, int port){
if (_socket == null) // 建立新的socket
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
else
Release(); // shut down & close socket try
{
// 嘗試連線
_socket.Connect(ip, port);
}
// 若發生錯誤
catch (SocketException e)
{
// 印出錯誤訊息
Debug.LogError(e);
return false;
}
// 連線成功, 開始監聽server端的封包
AsyncRecv();