Centaur_Quant_Architecture/MQL5/Scripts/SocketDiag.mq5

39 lines
1.5 KiB
MQL5
Raw Permalink Normal View History

//+------------------------------------------------------------------+
//| SocketDiag.mq5 — diagnostic: test MQL5 outbound sockets |
//+------------------------------------------------------------------+
#property strict
void TestConnect(const string host, const int port)
{
PrintFormat("[SocketDiag] === test %s:%d ===", host, port);
ResetLastError();
int s = SocketCreate();
PrintFormat("[SocketDiag] SocketCreate -> handle=%d GetLastError=%d", s, GetLastError());
if(s == INVALID_HANDLE || s == 0)
return;
ResetLastError();
bool ok = SocketConnect(s, host, port, 3000);
PrintFormat("[SocketDiag] SocketConnect(%s,%d,3000) -> %s | GetLastError=%d",
host, port, (ok ? "TRUE" : "FALSE"), GetLastError());
PrintFormat("[SocketDiag] SocketIsConnected -> %s",
(SocketIsConnected(s) ? "TRUE" : "FALSE"));
if(ok)
{
string msg = "{\"action_type\":\"Heartbeat\",\"symbol\":\"MQL5_DIAG\"}\r\n";
uchar buf[];
int n = StringToCharArray(msg, buf, 0, WHOLE_ARRAY, CP_UTF8) - 1;
ResetLastError();
int sent = SocketSend(s, buf, n);
PrintFormat("[SocketDiag] SocketSend -> %d bytes | GetLastError=%d", sent, GetLastError());
}
SocketClose(s);
Print("[SocketDiag] === done ===");
}
void OnStart()
{
Print("[SocketDiag] MQL5 outbound socket diagnostics");
TestConnect("127.0.0.1", 5555); // Centaur router (listening)
TestConnect("127.0.0.1", 22346); // MCP server (listening)
TestConnect("127.0.0.1", 59999); // closed port (comparison)
}