我试图在Node.js服务器和Unity Android游戏之间进行简单的客户端 - 服务器通信,但是我在试图弄清楚我为什么要编写代码时遇到了问题不起作用。
在游戏中,我使用.NET Socket类,因为所需的功能非常简单,但是当传递一个名为" ReceiveData"到函数BeginReceive(这个函数需要一个委托),它会抛出一个错误。但是在调试时,它表示函数" ReceiveData"是一个不知名的成员,但它在那里!该图像显示了代码片段和这个奇怪的错误。
可能有人帮我弄清楚如何解决这个问题,或者向我解释发生了什么。我在这个论坛和其他论坛上搜索了很多相似的问题,但是没有成功。
public class AccountManager : Singleton<AccountManager>
{
[...]
private void Initialize()
{
// Configurar conexión
this.clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
this.clientSocket.Connect(AccountManager.serverAddress, AccountManager.port);
// Empezar a recibir datos
this.clientSocket.BeginReceive(this.receivedDataBuffer, 0, this.receivedDataBuffer.Length, SocketFlags.None,
this.ReceiveData, null);
}
private void ReceiveCommand(string command) {...}
public void ReceiveData(IAsyncResult asyncResult)
{
// Comprobar longitud de respuesta
int responseLength = this.clientSocket.EndReceive(asyncResult);
if (responseLength <= 0) return;
// Copiar datos recibidos en array local
byte[] responseData = new byte[responseLength];
Buffer.BlockCopy(this.receivedDataBuffer, 0, responseData, 0, responseLength);
// Procesar datos
this.ReceiveCommand(Encoding.UTF8.GetString(responseData));
// Empezar a recibir otra vez
this.clientSocket.BeginReceive(this.receivedDataBuffer, 0, this.receivedDataBuffer.Length,
SocketFlags.None, new AsyncCallback(this.ReceiveData), null);
}
private void SendCommand(string command) {...}
private void Awake()
{
this.Initialize();
}
private void OnDestroy()
{
this.clientSocket.Shutdown(SocketShutdown.Both);
this.clientSocket.Close();
}
}
答案 0 :(得分:0)
我已经解决了我的问题。
我现在正在使用System.Net.Sockets.TcpClient类,它更易于使用且更可靠。
$valid = FALSE;
@exec("gm identify +ping filename", $result);
if (is_array($result)) {
if (in_array("MVG", explode(" ", implode(" ", $result))) || in_array("SVG", explode(" ", implode(" ", $result)))) $valid = TRUE;
}
这种方式可以通过使用流轻松进行通信。