面向Socket编程线程问题的c++Python嵌入

2024-03-29 15:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个嵌入在C++中的Python脚本,用于Socket编程。我有两个终端系统,都可以发送和接收。发送和接收操作发生在不同的C++线程中。程序构建良好,但有一个奇怪的错误,我遇到时,我运行.exe文件。在

最初我怀疑这是因为发送和接收套接字相同。 我也用不同的插座绑起来,但没用。在

有谁能告诉我这是什么问题吗?在

代码如下:

DWORD WINAPI sendPack(LPVOID iValue)
{
    while(1){
       const char* sendPy = "UDPSockSend.sendto('10707',('10.107.35.167',21567))";
       PyRun_SimpleString(sendPy);
    }
    return 0;
}

DWORD WINAPI receive(LPVOID iValue){
    while(1){
        Py_Initialize();
        recPy = "data,addr = UDPSockRcv.recvfrom(99000)";
        PyRun_SimpleString(recPy);
    }
    return 0;
}

int threads()
{
    HANDLE sendPackThread, receiveThread;
    DWORD dwGenericThread;

    char lszThreadParam[4];

    receiveThread = CreateThread(NULL,0,receive,&lszThreadParam,0,&dwGenericThread);
    if(receiveThread == NULL){
        DWORD dwError = GetLastError();
        return 0;
    }

    sendPackThread = CreateThread(NULL,0,sendPack,&lszThreadParam,0,&dwGenericThread);
    if(sendPackThread == NULL){
        DWORD dwError = GetLastError();
        std::cout<<"SCM:Error in Creating send sample thread"<<dwError<<"\n" ;
        return 0;
    }

    return 1;
}

int main(int argc, char* argv[])
{
    using namespace std;
    Py_Initialize();

    const char * initPy = "import socket;
    UDPSockSend = socket.socket(socket.AF_INET,socket.SOCK_DGRAM);
    UDPSockRcv = socket.socket(socket.AF_INET,socket.SOCK_DGRAM);
    listen_addr = ('',2000);UDPSockRcv.bind(listen_addr)";
    PyRun_SimpleString(initPy);


    int thd = threads();

    system("pause");
    return 0;
}

提前谢谢


Tags: returnsocketpyrunnullintaddrchardword