========== 本文開始 ==========
其實不管是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();
&nbs

本文分享了C#客户端使用Socket进行网络通信时遇到的细节和问题,包括基本流程、协议设计注意事项及实践中遇到的问题。在协议设计中,强调了跨平台变量大小差异,并给出了结构体示例。遇到的问题主要是大型协议分包接收时的处理策略,通过跟踪封包总数和编号确保完整解析协议。
最低0.47元/天 解锁文章
1797

被折叠的 条评论
为什么被折叠?



