回 帖 发 新 帖 刷新版面

主题:基于用户数据报协议UDP的程序实例

//程序说明:基于用户数据报协议UDP的程序实例
//程序功能:在窗口中点击鼠标左键,则发送信息到端口号为6000的远程机上,并可以从该远程机接收数据


#include <WINSOCK.H>
#include <iostream>

////////////////////////////////////
//说明全局变量
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
///////////////////////////////////

int APIENTRY WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lp, int nC)
{
    MSG msg;
    HWND hWnd;
    //实例句柄存入全局变量hInst
    hInst = hI;
    WNDCLASS wndC;
    memset(&wndC, 0, sizeof(WNDCLASS));

    wndC.lpfnWndProc = (WNDPROC)WndProc;
    wndC.hInstance = hI;
    wndC.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    wndC.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wndC.lpszClassName = "W1";
    RegisterClass(&wndC);
    hWnd = CreateWindowEx(WS_EX_PALETTEWINDOW,"W1","UDP程序1[端口8000]",
        WS_OVERLAPPEDWINDOW,
        100,100,200,100,
        NULL,NULL,hI,NULL);
    if(!hWnd)
        return FALSE;

    ShowWindow(hWnd,nC);
    //主消息循环
    while (GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

///////////////////////////////////////
//定义Winsock API需要的量
WSADATA ws;
SOCKET s1,s2;
struct sockaddr_in Cs1A,Cs2A;
//发送数据缓冲区
char sendBuf[200];
//接收数据缓冲区
char recvBuf[200];
int len;                      //存放接收到的字节数
#define Cs1Port 8000          //本地端口号
#define Cs2Port 6000          //远程端口号
#define Cs1IP   "127.0.0.1"   //本地IP地址
#define Cs2IP   "127.0.0.1"   //远程IP地址

//////////////////////////////////////
//消息处理
LRESULT CALLBACK WndProc(HWND hW,UINT msg,WPARAM wP,LPARAM lP)
{
    switch(msg) {
    case WM_DESTROY:   //关闭程序触发事件

         
    
        //向Windows注销Socket触发事件
         
        //释放连接
         
        //卸载动态链接库Winsock DLL
     
        PostQuitMessage(0);
        break;

    case WM_CREATE:    //初始化触发事件
        //装载动态链接库Winsock DLL
        
        //TODO...
        
        


        
        
        break;

    case WM_USER/*a user defined message*/:
        switch(LOWORD(lP)) {
        case FD_READ:
            //TODO:
            
            MessageBox(0,recvBuf,"UDP程序1从UDP程序2收到的数据",MB_OK);
            break;
        }
        break;

    case WM_LBUTTONDOWN:
        //TODO:

        break;
    }

    return DefWindowProc(hW,msg,wP,lP);
}

回复列表 (共1个回复)

沙发

谁能帮我完成呀,谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册