【observer源码】【绝地反击附图源码】【jq $.fn 源码解析】c socket 源码

2024-12-29 16:35:22 来源:vue仿qq源码 分类:热点

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

c  socket 源码

CSocket之UDP编程

       #include <stdio.h>

       #include <Winsock2.h>

       #pragma comment(lib,observer源码"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只是进行了封装而已,原理是一样的,编程要思路灵活才行。

为何要学习MFC?

       è¿˜æœ‰ä¸€ä¸ªé¢†åŸŸæˆ‘们不能忽略,那就是个人软件、小型软件。在猪八戒之类的威客网上软件开发的栏目搜一搜,可以发现大部分的windows程序开发的需求,威客们都是用MFC或Dephi来开发,当然,还有一些易语言。如果你要开发一款个人用的小软件,MFC是很好的选择。

       å¯¹äºŽè¿™ç§ä¸ªäººè½¯ä»¶ã€å°åž‹è½¯ä»¶ï¼ŒMFC还是有着很多优势的:

       1.体积小,静态编译后体积也不大。

       2.在各版本的windows上兼容性较好。

       3.对windowsAPI的调用较方便。

       å­¦ä¹ MFC不仅仅要学习用MFC,还要学习MFC的框架设计思想。

       å¦‚果仅仅会用MFC的话,可能在找工作的时候,一旦工作内容离开了MFC,就什么也不会了。MFC作为一个诞生了年的成熟的框架,其设计思想是很值得我们学习的。粗略读一读MFC源代码就会发现MFC的厉害之处,很多思想都让人很佩服,有时候看完一段源代码后,心里暗自感叹。无法想象MFC在那个连C++的STL都还没出现的年代,就用泛型编程技术写出了CList、CArray、CMap等容器。MFC不仅仅是将面向过程的API封装为面向对象的形式,他还在背后做了很多事情,包括简化一些过程,提高一些稳定性。如果让我把面向过程的windows

       socket API封装成面向对象的类,我肯定会这样想,嗯,socketAPI几乎每个函数的第一个参数都是SOCKET结构体,这是面向过程的特点,如果要封装为面向对象的类,自然是把这个结构体作为类的成员变量,然后封装socketAPI函数为类的方法,提供大量的默认参数,就OK。实际上并非这样,读一读MFC中CSocket的的源代码,就会发现实际上并非如此简单。MFC的CSocket类里,做了大量的工作,使我们用起来大大的方便了。如果你之前一直用socketAPI来开发网络程序,再来用MFC的CAsyncSocket和CSocket的话,会觉得,太方便了!仔细读一读MFC源码,真的对我们将来编写自己的类、设计自己的框架,有很大帮助!

       ä¸€ä¸ªå¥½çš„程序员,不能只是会用现成类库的方法。

       ä¸€ä¸ªå¥½çš„程序员,应该会封装、会设计类库、会设计框架。

       åœ¨ä¸€ä¸ªå®žé™…的项目中往往是这样的:我们需要开发一个windows平台上的软件,直接用windowsAPI吧,1.太麻烦2.面向过程的代码写的越多越头疼3.可重用性不强。使用现成类库吧,有时候无法满足我们特定的需求。这时候,我们就需要自己动手封装API,自己动手派生现成类库中的类,来添加方法。如果你不了解类库,派生下来后就会发现根本无从下手。很多公司在一些做了很久的项目上,往往都是有自己的类库、自己的框架,并不断的完善和扩展。这也是我们要学习类库、框架设计的原因。

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

       ä½ çš„理解不对

       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环境下的

更多资讯请点击:热点

热门资讯

studioone源码

2024-12-29 15:191649人浏览

hidep源码

2024-12-29 15:051446人浏览

pyd源码

2024-12-29 15:041206人浏览

rmtsvc源码

2024-12-29 14:0080人浏览

推荐资讯

桃園停電影響7千戶午夜恢復! 陳建仁:不用擔心供電

桃園市16日下午起無預警停電,影響約7千多戶,台電最終在午夜恢復供電,對此行政院長陳建仁今17)天表示,0403地震後供電系統確實有受到影響,不過經過盤點後,籲民眾不用擔心供電問題;另外潛艦國造的重要

orelsethrow源码

1.java之Optional扫盲2.Java高级三):Optional的巧用3.Java8新特性-Optional类4.Java 中的 Optional5.orelsethroworelse6.Ja