для начала откатите терминал на 225 релиз
пробовал. результат тот же самый :(((
Обязательно с сокетами работать? Почему бы не передавать данные по http? Таких примеров в кодебазе навалом.
Всем спасибо за советы. Учел. Что касается сокетов, то ошибка возникала в случае, когда его не удалось создать. Простой try catch помог решить эту проблему :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет. Стоит задача - написать программу, которая будет открывать новые сделки. Параметры сделка (type, symbol, lots...) находятся на удаленном сервере. Программа должна работать в режиме 24 на 7.
Программу написал. Но иногда "выпадает" крешлог:
There has been a critical error
Time : 2010.06.11 18:29
Program : Client Terminal
Version : 4.00 (build: 226, 24 Mar 2009)
OS : Windows XP Professional 5.1 Service Pack 3 (Build 2600)
Processors : 1 x X86 (level 15)
Memory : 982512/726088 kb
Exception : E0434F4D
Address : 7C812AEB
Access Type : NA
Access Addr : 00000000
Registers : EAX=0428F860 CS=001b EIP=7C812AEB EFLGS=00000202
: EBX=E0434F4D SS=0023 ESP=0428F85C EBP=0428F8B0
: ECX=00000000 DS=0023 ESI=0428F8EC FS=0038
: EDX=00000029 ES=0023 EDI=001A87A0 GS=0000
Stack Trace : 79F071AC 79F0A629 7A70C46E 00000000
: 001ADD88 79E74034 C5E8F18B 00000000
: 00000000 00000000 00000000 00000000
: 00000000 00000000 00000000 00000000
Modules :
1 : 00400000 004BB000 c:\program files\metatrader 4 - dealing241\terminal.exe
2 : 03890000 00327000 c:\windows\system32\xpsp2res.dll
3 : 042D0000 00096000 c:\windows\system32\crypt32.dll
4 : 047C0000 00059000 c:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcm90d.dll
5 : 06ED0000 000D5000 c:\windows\system32\comres.dll
6 : 10000000 0000D000 c:\program files\metatrader 4 - dealing241\expertsample.dll
7 : 10200000 00123000 c:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll
8 : 43090000 00045000 c:\windows\system32\iertutil.dll
9 : 433F0000 0012A000 c:\windows\system32\urlmon.dll
10 : 5B260000 00038000 c:\windows\system32\uxtheme.dll
11 : 5BD50000 00056000 c:\windows\system32\netapi32.dll
12 : 5E3A0000 0008D000 c:\windows\microsoft.net\framework\v2.0.50727\diasymreader.dll
13 : 61EC0000 0000E000 c:\windows\system32\mfc42loc.dll
14 : 637A0000 00588000 c:\windows\assembly\nativeimages_v2.0.50727_32\system.xml\c98cb65a79cfccb44ea727ebe4593ede\system.xml.ni.dll
15 : 64890000 000FC000 c:\windows\assembly\nativeimages_v2.0.50727_32\system.configuration\eee9b48577689e92db5a7b5c5de98d9b\system.configuration.ni.dll
16 : 68000000 00036000 c:\windows\system32\rsaenh.dll
17 : 698B0000 00058000 c:\windows\system32\hnetcfg.dll
18 : 71A30000 00040000 c:\windows\system32\mswsock.dll
19 : 71A70000 00008000 c:\windows\system32\wshtcpip.dll
20 : 71A80000 00008000 c:\windows\system32\ws2help.dll
21 : 71A90000 00017000 c:\windows\system32\ws2_32.dll
22 : 72CD0000 00008000 c:\windows\system32\msacm32.drv
23 : 72CE0000 00009000 c:\windows\system32\wdmaud.drv
24 : 73D90000 000FE000 c:\windows\system32\mfc42.dll
25 : 746E0000 0004C000 c:\windows\system32\msctf.dll
26 : 75310000 0002E000 c:\windows\system32\msctfime.ime
27 : 75DA0000 00091000 c:\windows\system32\mlang.dll
28 : 76350000 00005000 c:\windows\system32\msimg32.dll
29 : 76360000 0001D000 c:\windows\system32\imm32.dll
30 : 76380000 00049000 c:\windows\system32\comdlg32.dll
31 : 76B20000 0002E000 c:\windows\system32\winmm.dll
32 : 76C20000 0002E000 c:\windows\system32\wintrust.dll
33 : 76C80000 00028000 c:\windows\system32\imagehlp.dll
34 : 76F10000 00027000 c:\windows\system32\dnsapi.dll
35 : 76FB0000 00006000 c:\windows\system32\rasadhlp.dll
36 : 76FC0000 0007F000 c:\windows\system32\clbcatq.dll
37 : 77110000 0008B000 c:\windows\system32\oleaut32.dll
38 : 773C0000 00103000 c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
39 : 774D0000 0013D000 c:\windows\system32\ole32.dll
40 : 77910000 00170000 c:\windows\system32\setupapi.dll
41 : 77B10000 00012000 c:\windows\system32\msasn1.dll
42 : 77BC0000 00007000 c:\windows\system32\midimap.dll
43 : 77BD0000 00015000 c:\windows\system32\msacm32.dll
44 : 77BF0000 00008000 c:\windows\system32\version.dll
45 : 77C00000 00058000 c:\windows\system32\msvcrt.dll
46 : 77DC0000 000AC000 c:\windows\system32\advapi32.dll
47 : 77E70000 00092000 c:\windows\system32\rpcrt4.dll
48 : 77F10000 00049000 c:\windows\system32\gdi32.dll
49 : 77F60000 0007C000 c:\windows\system32\shlwapi.dll
50 : 77FE0000 00011000 c:\windows\system32\secur32.dll
51 : 78130000 0009B000 c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\msvcr80.dll
52 : 79000000 00046000 c:\windows\system32\mscoree.dll
53 : 79060000 00056000 c:\windows\microsoft.net\framework\v2.0.50727\mscorjit.dll
54 : 790C0000 00B36000 c:\windows\assembly\nativeimages_v2.0.50727_32\mscorlib\32e6f703c114f3a971cbe706586e3655\mscorlib.ni.dll
55 : 79E70000 0058F000 c:\windows\microsoft.net\framework\v2.0.50727\mscorwks.dll
56 : 7A440000 007EA000 c:\windows\assembly\nativeimages_v2.0.50727_32\system\ba0e3a22211ba7343e0116b051f2965a\system.ni.dll
57 : 7C800000 000F8000 c:\windows\system32\kernel32.dll
58 : 7C900000 000B0000 c:\windows\system32\ntdll.dll
59 : 7C9C0000 01979000 c:\windows\system32\shell32.dll
60 : 7E360000 00091000 c:\windows\system32\user32.dll
Call stack :
Причем он может появится и через 10 минут работы программы, и через 3 часа.
Что касается Dll. Взял готовый код с MSDN (http://msdn.microsoft.com/ru-ru/library/attbb8f5(v=VS.90).aspx)
---MQL4:
#import "ExpertSample.dll"
string SocketSendReceive(string server, int port, string request);
#import
---Visual C++
#define WIN32_LEAN_AND_MEAN
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::Text;
using namespace System::Collections;
using namespace System::Net::Sockets;
using namespace System::Runtime::InteropServices;
Socket^ ConnectSocket(String^ server, int port)
{
Socket^ s = nullptr;
IPHostEntry^ hostEntry = nullptr;
hostEntry = Dns::GetHostEntry(server);
IEnumerator^ myEnum = hostEntry->AddressList->GetEnumerator();
while (myEnum->MoveNext())
{
IPAddress^ address = safe_cast<IPAddress^>(myEnum->Current);
IPEndPoint^ endPoint = gcnew IPEndPoint(address, port);
Socket^ tmpS = gcnew Socket(endPoint->AddressFamily, SocketType::Stream, ProtocolType::Tcp);
tmpS->Connect(endPoint);
if (tmpS->Connected)
{
s = tmpS;
break;
}
else
{
continue;
}
}
return s;
}
__declspec(dllexport) char* __stdcall SocketSendReceive(char* server, int port, char* request)
{
String^ stringServer = gcnew String(server);
String^ stringRequest = String::Concat("GET /" + gcnew String(request) + " / HTTP/1.1\r\nHost: ", stringServer, "\r\nConnection: Close\r\n\r\n");
String^ stringResponse;
array<Byte>^bytesSent = Encoding::ASCII->GetBytes(stringRequest);
array<Byte>^bytesReceived = gcnew array<Byte>(256);
Socket^ s = ConnectSocket(stringServer, port);
if (s == nullptr)
{
stringResponse = "Connection failed";
}
s->Send(bytesSent, bytesSent->Length, static_cast<SocketFlags>(0));
int bytes = 0;
do
{
bytes = s->Receive(bytesReceived, bytesReceived->Length, static_cast<SocketFlags>(0));
stringResponse = String::Concat(stringResponse, Encoding::ASCII->GetString(bytesReceived, 0, bytes));
}
while (bytes > 0);
array<String^>^ arrayResponse = stringResponse->Split('\n');
IntPtr ptr = Marshal::StringToHGlobalAnsi(arrayResponse[arrayResponse->Length - 1]);
return (char*)ptr.ToPointer();
}
Подскажите, где затаилась ошибка????