Сценарий, который я написал, написан на другом языке, незнакомом большинству людей [MQL4], но я импортировал функции python в код, чтобы я мог выполнить код python внутри сценарий. Моя проблема в том, что я подключаюсь к серверу с MQL4, и я хочу отправлять данные через его поток с помощью python. До сих пор я могу получить python только для создания своего собственного соединения. Есть ли способ подключиться к уже открытому сокету Windows?Python Winsock - Как отправить данные через уже активное соединение winsock
MQL КОД
void ircconnect(){
int struct_sockaddr[4];
int addr, port_low, port_high;
int opts[1];
int c;
if (irc_disabled == 1) return(0);
// fill the sockaddr struct
addr = inet_addr(server_addr);
port_low = server_port & 0x00ff;
port_high = (server_port & 0xff00) >> 8;
struct_sockaddr[0] = AF_INET | (port_high << 16) | (port_low << 24);
struct_sockaddr[1] = addr;
struct_sockaddr[2] = 0;
struct_sockaddr[3] = 0;
// connect
s = socket(AF_INET, SOCK_STREAM, 0);
opts[0] = 1000; // send timeout milliseconds
setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, opts, 4);
c = connect(s, struct_sockaddr, 16);
питон КОД
//Initialize Python Dll
PyInit();
PyExecute("from Tkinter import *");
PyExecute("root = Tk()");
//Import necessary modules
PyExecute("import socket, os");
//Connect
PyExecute("network = \"irc.ircnetwork.com\"");
PyExecute("port = 6667");
PyExecute("irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)");
PyExecute("irc.connect((network, port))");
//Identify
PyExecute("irc.recv(1024)");
PyExecute("irc.send(\\"NICK Nick\\r\\n\")");
PyExecute("irc.send(\\"USER Nick Nick Nick :Nick IRC\\r\\n\")");
PyExecute("irc.send(\\"JOIN #channel\\r\\n\")");
PyExecute("irc.send(\"PRIVMSG NickServ IDENTIFY <pass>\\r\\n\")");
PyExecute("VERSION = \"version>\\r\\n\"");
//Listen for PING
PyExecute("while True:");
PyExecute("data = irc.recv(1024)");
PyExecute("print data");
PyExecute("if data.find(\"PING\") != -1:");
//Send PONG
PyExecute("irc.send(\"PONG \" + data.split() [ 1 ] + \"\\r\\n\")");
PyExecute("elif data.find(\"VERSION\") !=-1:");
PyExecute("irc.send(VERSION + \"\\r\\n\")");
PyExecute("elif data.find(\"NOTICE\") !=-1:");
PyExecute("nick = data.split(\"\!\") [ 0 ].replace (\":\", \"\")");
PyExecute("message = \":\".join(data.split (\":\") [ 2: ])");
возможно интерес: HTTP: //msdn.microsoft.com/en-us/library/windows/desktop/ms740522%28v=vs.85%29.aspx – mensi
Спасибо. Я проверю это. :) – user1337878
FYI, строки Python также могут использовать одинарные кавычки, исключая необходимость избежать двойных кавычек в коде. –