【预定系统 源码】【阿里源码实践】【源码精灵球】c socket源码

时间:2024-11-26 12:22:10 来源:源码差值怎么编写 分类:热点

1.如何理解MFC程序和WIN32程序的区别?
2.CSocket之UDP编程

c socket源码

如何理解MFC程序和WIN32程序的区别?

       ä½ çš„理解不对

       Win api只是接口,只能被用到别的东西里才显的出价值,比如用在了MFC、DLL、串口、SOCKET,COM+。

       è€ŒMFC是基本类库,是属于C++的范畴,WIN API基本上都是结构类型的应用,里面没有类,所以MFC可以调用API,API不能调用MFC!

       é€šè¿‡ä¼ å£ï¼Œåˆ©ç”¨MFC可以将C++程序各种的WIN的环境,MFC只能在WIN环境下使用,API也是

       Win API是 Windows系统下位 Application Program Interface 应用程序接口,MFC是Microsoft Function Class 微软函数类库, 前者更加底层,在MFC程序里,可以调用WIN API的,MFC本来就用了很多WIN API,预定系统 源码MFC编写的程序可以用在各种Windows环境下的

CSocket之UDP编程

       #include <stdio.h>

       #include <Winsock2.h>

       #pragma comment(lib,"ws2_.lib")

       void main()

       {

        WORD wVersionRequested;

        WSADATA wsaData;

        int err;

        wVersionRequested = MAKEWORD( 1, 1);

        err = WSAStartup( wVersionRequested, &wsaData );

        if ( err != 0 )

        {

        return;

        }

        if ( LOBYTE( wsaData.wVersion ) != 1 ||

        HIBYTE( wsaData.wVersion ) != 1 )

        {

        WSACleanup( );

        return;

        }

        SOCKET sersocket=socket(AF_INET,SOCK_DGRAM,0);

        SOCKADDR_IN seraddr;

        seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

        seraddr.sin_family=AF_INET;

        seraddr.sin_port=htons();

        bind(sersocket,(SOCKADDR*)&seraddr,sizeof(SOCKADDR));

        SOCKADDR clientaddr;

        int len=sizeof(SOCKADDR);

        char revbuf[];

        char sendbuf[];

        recvfrom(sersocket,revbuf,,0,(SOCKADDR*)&clientaddr,&len);

        printf("%s\n",revbuf);

        scanf("%s",&sendbuf);

        sendto(sersocket,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);

        closesocket(sersocket);

        WSACleanup();

       }

       #include <stdio.h>

       #include <Winsock2.h>

       #pragma comment(lib,"ws2_.lib")

       void main()

       {

        WORD wVersionRequested;

        WSADATA wsaData;

        int err;

        wVersionRequested = MAKEWORD( 1, 1);

        err = WSAStartup( wVersionRequested, &wsaData );

        if ( err != 0 )

        {

        return;

        }

        if ( LOBYTE( wsaData.wVersion ) != 1 ||

        HIBYTE( wsaData.wVersion ) != 1 )

        {

        WSACleanup( );

        return;

        }

        SOCKET sockclient=socket(AF_INET,SOCK_DGRAM,0);

        SOCKADDR_IN clientaddr;

        clientaddr.sin_addr.S_un.S_addr=inet_addr(".0.0.1");

        clientaddr.sin_family=AF_INET;

        clientaddr.sin_port=htons();

        int len=sizeof(SOCKADDR);

        char revbuf[];

        char sendbuf[];

        printf("请输入内容:\n");

        while(1)

        {

        scanf("%s",&sendbuf);

        sendto(sockclient,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);

        recvfrom(sockclient,revbuf,,0,(SOCKADDR*)&clientaddr,&len);

        printf("%s\n",revbuf);

        }

        closesocket(sockclient);

        WSACleanup();

       }

       å¤§åŒå°å¼‚,CSocket只是进行了封装而已,原理是一样的,编程要思路灵活才行。