我以流套接字的方式写好了服务器端的程序,但是客户端的程序想用PB来写,这样就需要调用封装好的Socket DLL。建立套接字和关闭套接字,这两个函数我还会写,但可能也有毛病,贴出来,高手帮忙看看吧。
extern "C" _declspec ( dllexport )
int PASCAL SocketConnect(LPCTSTR lpszSerIPAddr, UINT nPort)
{
    WORD wVersionRequested;   // 定义版本信息变量
    WSADATA wsaData;          // 定义数据信息变量    DWORD dwIPAddr;
    SOCKADDR_IN sockAddr;    int iErrorCode;           // 定义错误号变量    wVersionRequested = MAKEWORD(2,1);      // 给版本信息赋值
    iErrorCode = WSAStartup(wVersionRequested, &wsaData);    // Could not load Windows Sockets DLL.
    if(iErrorCode != 0)
    {
        WSACleanup();
        return -1;
    }    // Server IPAddress ...
    if((dwIPAddr = inet_addr(lpszSerIPAddr)) == INADDR_NONE)
    {
        WSACleanup();
return -2;
    }
    else
    {
m_hClientSocket = socket(PF_INET, SOCK_STREAM, 0);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(nPort);
sockAddr.sin_addr.S_un.S_addr = dwIPAddr; // Connected Server error...
iErrorCode = connect(m_hClientSocket, (LPSOCKADDR)&sockAddr, sizeof(sockAddr));
if(iErrorCode != 0)
return -3;
     } return 0;
}extern "C" _declspec ( dllexport )
int PASCAL SocketClose()
{
closesocket(m_hClientSocket);
WSACleanup();
return 0;
}最关键的是在写接受和发送函数时,要用到异步选择机制,在基于VC环境的Dialog下,
WSAAsyncSelect(m_hServerSocket, m_pDlg->GetSafeHwnd(), WM_SERVER_ACCEPT, FD_ACCEPT);
的窗口句柄我会写,但是如果是在DLL中那该如何处理??
高手们能否帮我写好可以在DLL中调用的客户端接受和发送函数,
要求:
接受函数的返回值是接受的内容(可以是int型的1、2、3...)
发送函数的参数为int型,请高手帮忙实现,我也可以读读代码