第一篇:c语言也能干大事第11节
板书:
这节课是自己动手写QQ、自己动手写飞鸽传书的基础,以后想从事网络开发、信息系统开发、游戏开发、嵌入式系统开发等的同学必须学习。
演示一个简单的和网易Email服务器对话的过程。
1、网络基本概念
讲解QQ的基本原理
讲解浏览器上网的基本原理
服务器:Server。提供服务的计算机。
客户端:Client。和服务器端交互的一个设备。
IP地址:计算机在网络中的地址。相当于每个家庭的电话。211.97.1.2别名、域名:。域名就相当于你家的地址。问114,你家的电话(告诉地址)
DNS:网络中的114。Domain Name System。
端口:Port。不同的程序连接服务器时候用的插座。(程序和服务器通信的时候的一个开得的一个口子)
Socket(套接字):导线、网络连接。
2、WinSock、WinSocket。
Socket:平台无关的。Socket标准。所有操作系统都实现了这个标准。Send、recv。。标准的。一通百通!!!!!!!!!!!!!!!
WinSock:添加了一些Windows独有的函数。而且不用这些函数的话Socket程序还跑不起来。羞臊微软!!
WinSock编程:平台无关,一通百通。WSA(Windows Socket API)
Sz1.tencent.com
Sz2.tencent.com3、LastError
调用WindowsAPI的时候,每步执行完毕都会把执行结果放到LastError中去,所以应该在函数执行完毕立即去取。
DeleteFile(f1)
DeleteFile(f2)
GetLastError()
LastError只能容纳一个错误码
DeleteFile(f1)
GetLastError()
DeleteFile(f2)
GetLastError()
错误码。2233、34455
5FormatMessage:把错误码转换为错误消息。
Windows错误处理
GetLastError
1.void ShowError()
2.{
3.TCHAR* lpMsgBuf;
4.FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区
5.FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
6.NULL,GetLastError(), //获取错误信息标识
7.MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//使用系统缺省语言
8.(LPTSTR)&lpMsgBuf, //消息缓冲区
9.0,10.NULL);
11.MessageBox(NULL,lpMsgBuf,“",MB_ICONERROR);
12.}
复制代码
在.h中声明函数,在.c中实现!!
都会有哪些错误?
4、模板代码:
(1)、添加winsock2.h
(2)、连接库“wsock32”。怎么知道添加它呢?
(3)、模板代码
1.WSADATA wsaData;
2.//初始化Socket库
3.WSAStartup(MAKEWORD(2,0),&wsaData);
4.//创建一根电线
5.SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
6.SOCKADDR_IN sa;
7.sa.sin_family=AF_INET;
8.//设置电线连接服务器端的端口
9.sa.sin_port = htons(IPPORT_SMTP);
10.//123.125.50.135是ping smtp.163.com出来的,后面会讲使用gethostbyname来直接从
11.//主机名得到ip地址
12.sa.sin_addr.S_un.S_addr = inet_addr(”123.125.50.135“);
13.//为什么不用设置客户端的端口,难道不需要客户端的端口吗?
14.if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
15.{
16.ShowError();
17.return;
18.}
19.//做事情。把大象放冰箱总共分几步
20.closesocket(sock);
21.WSACleanup();
复制代码
QQ服务器的端口8888。需要指定客户端的端口是9999.端口有一个特点:排他性!端口已经被别的程序占用,不能再用这个端口。开两个QQ。11111111111
22222222222 9999。如果端口可以被多个程序使用的话,QQ聊天服务器发过来的消息被多个QQ收到。很荒谬!排他性!
如果在程序里写死了客户端用的端口。。所以才需要Socket替客户端动态分配一个端口。所以不需要在程序中显示指定客户端的端口号!
客户端向服务器端发消息:send
服务器端想客户端发消息,客户端这边应该接收,recv。(receive)
SMTP服务器,你连上来以后服务器端主动向你发一条消息
recv(sock,buffer,256,0);
第一个是使用的socket,“导线”,套接字
接收数据的缓冲区的指针
接收数据的缓冲区的大小
send(sock,cQuit,lstrlen(cQuit),0);
第一个是使用的socket,“导线”,套接字
接收数据的缓冲区的指针
接收数据的缓冲区的大小
1.(4)一上来人家就主动和你唠嗑:
2.char buffer[256];
3.ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
4.//接收问候语
5.recv(sock,buffer,256,0);
6.MessageBox(hwnd,buffer,”“,0);
7.(5)朋友再见
8.//注意不能忘了末尾的回车
9.TCHAR cQuit[] = ”QUITn“;
10.send(sock,cQuit,lstrlen(cQuit),0);
11.12.ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
13.//接收GoodBye
14.recv(sock,buffer,256,0);
15.MessageBox(hwnd,buffer,”",0);
复制代码
第二篇:C语言也能干大事
1.格式:MessageBox(NULL,TEXT(“”),TEXT(“”),MB_OKCANCEL|MB_ICONQUESTION);
2.按钮:MB_OK,MB_OKCANCEL,MB_YESONCANCEL,MB_RETRYCANCEL,MB_ABORTRETRYIGNORE;
确定,确定取消,是否取消,重试取消,终止,重试忽视
3.图标:MB_ICONHAND,MB_ICONQUESTION,ICONEXCLAMATION(感叹),MB_ICONASTERISK;
4.取返回值
int ret=MessageBox(NULL,TEXT(“”),TEXT(“”),MB_OKCANCEL|MB_ICONQUESTION);if(IDOK==ret){}else{};
5.C语言(网络,数据库,图形学,内核等)一通百通,一切语言都是纸老虎。如鹏网!
6.怎样把程序发给别人(debug,release);将debug转成release,从新编译.
第三篇:C语言也能干大事1板书
板书: 第一节
1、C语言不是只能开发黑底白字的控制台界面程序。学习本课的基础:本课程不讲C语言基础知识,C语言考及格,学的过程中配合复习,有不懂的回去翻书。
2、学完本课程以后同学们做的一些作品赏析:计算器、俄罗斯方块、音乐播放器、学生管理系统(),邮件客户端(),Web论坛()可以开发游戏、网络程序、网站程序等。C语言什么都可以开发
3、准备工作,安装VC6(在网上搜“Visual C++ 6”,找合适的地址下载)。VC6在Vista、Windows下启动可能有兼容性提示。
3、开始做第一个C语言的程序
【文件】→【新建】,打开【工程】选项页,选择【Win32 Application】(不要选错了),在“位置”中修改工程保存的路径。(以前用Tubor C的同学会问“什么叫工程?”。在以前大家用TurboC写的程序一般也就是一个文件,但是用C语言写大程序的时候不可能把所有的代码都写在一个文件中,肯定要写很多文件。“工程(Project)”就是这些文件的一个集合。)在“工程名”中写入你为这个工程取的名字,最好有一定意义。下一步【一个简单的Windows程序】
4、向Windows的世界问好
MessageBox(NULL,TEXT(“世界你好”),TEXT(“问好”),MB_OK);
VC6在Vista、Windows下编译调试时可能有兼容性提示。
5、学本课程常见问题
(1)为什么不用TurboC?
Turbo C(Win-TC)太老了,界面还是DOS界面,库也是DOS的库,没有网络开发包、没有Windows界面开发包。TC只能用来学C的基础,要进行实际开发必须使用先进一点的工具。还是让TurboC进博物馆吧。
(2)为什么不用更高版本的VC?
我们不使用高版本的VC主要是如下考虑:VC6和高版本的VC没有本质区别(VC6是1998年的东西,大部分人、公司还是用VC6,市面上的书也都是用VC6),只不过是升级了一下C++的版本、STL的版本而已,对咱们这次学习没有什么影响;VC6的操作方式和VC2008非常相似,用熟了VC6再学高版本的VC只用半小时而已;高版本的VC体积太大,要五六百兆,而上面给出的VC6只有100MB。VC2008下建立工程。
(3)学C语言还是学其他语言,用其他语言实现岂不是更好?
用最熟悉的语言深入编程的各个领域(网络、数据库、图形学、内核等),一通百通,一切语言都是纸老虎。参考资料如鹏网首页。
6、深入研究MessageBox
(1)MessageBox(NULL,TEXT(“世界你好”),TEXT(“问好”),MB_OK);
第一个参数暂时不讲;第二个是正文;第三个是标题(Caption);第四个是类型。
MB_OK就是表示有一个OK按钮【确定】)
TEXT是一个宏,当字符串中有中文的时候最好用TEXT来包围这个字符串,虽然不使用TEXT在VC6中没问题,但是在VC7中有问题,而且微软也建议使用TEXT宏,因此在涉及到中文的场合要使用它。他的作用就是把中文转化成不会乱码的格式。(暂时这么认为)。_T(“问好”),其实_T只是TEXT的一个缩写而已。而且_T在有的低版本里不识别。TEXT()低版本也识别。暂时不用关心TEXT的细节。
换个样子:
MessageBox(NULL, TEXT(“世界你好”), TEXT(“你好”),MB_OKCANCEL);
可从设置希望在对话框中显示的按钮:
#define MB_OK
0x00000000L
#define MB_OKCANCEL
0x00000001L
#define MB_ABORTRETRYIGNORE
0x00000002L
#define MB_YESNOCANCEL
0x00000003L
#define MB_YESNO
0x00000004L
#define MB_RETRYCANCEL
0x00000005L
也可以设置对话框中显示的图标:
#define MB_ICONHAND
0x00000010L
#define MB_ICONQUESTION
0x00000020L
#define MB_ICONEXCLAMATION
0x00000030L
#define MB_ICONASTERISK
0x00000040L
比如:MessageBox(NULL, TEXT(“世界你好”),TEXT(“你好”),MB_ICONQUESTION);
(2)可是如果我想显示“确定、取消”按钮的时候同时使用问号图标呢? MessageBox(NULL, TEXT(“世界你好”), TEXT(“你好”),MB_OKCANCEL|
MB_ICONQUESTION);
MessageBox(NULL, TEXT(“世界你好”), TEXT(“你好”),MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION);
(3)思考:
到这一步如果你只是在背诵“第一组和第二组中间放一个竖线就可以实现两种效果的组合形式”,那么你未来只会成为一个代码工人。我们要思考一下其背后的原理。
“|”是什么意思?“|”是位运算里的“或”运算,只有对应的两个二进位有一位为1时,结果位才为1,否则为0。MB_OK、MB_OKCANCEL等的低四位不同,但是高位永远为0;MB_ICONHAND、MB_ICONQUESTION等的低5至第8位不同,而其他位永远为0。这样“MB_OK、MB_OKCANCEL”组的数值与“MB_ICONHAND、MB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。
这种风格叫“掩码”,在Windows编程中这种用法会经常用到。
(4)返回值
MessageBox是有返回值的,返回值为用户点击的按钮:
#define IDOK
#define IDCANCEL
#define IDABORT
#define IDRETRY
#define IDIGNORE
#define IDYES
6#define IDNO
7代码:
int ret = MessageBox(NULL, TEXT(“你是人吗?”), TEXT(“火星人”),MB_YESNO | MB_ICONQUESTION);
if(ret==IDYES)
{
MessageBox(NULL, TEXT(“火星人你好”), TEXT(“问好”),MB_OK);
}
else
{
MessageBox(NULL, TEXT(“欢迎回家来”), TEXT(“问好”),MB_OK);
}
6、课后作业:自己动手写恶搞程序。
运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“你看你就不像好人,点击【确定】开始格式化C盘!”;如果点击
【否】,则弹出对话框(有【重试】、【取消】两个按钮)“尝试把你变成好人失败,是否重试?”。
别把教学视频当电影看!!多练!!多写!
第四篇:C语言也能干大事视频课件 第1篇
《C语言也能干大事》第一节
1、C语言不是只能开发黑底白字的控制台界面程序。学习本课的基础:本课程不讲C语言基础知识,C语言考及格,学的过程中配合复习,有不懂的回去翻书。
2、学完本课程以后同学们做的一些作品赏析:计算器、俄罗斯方块、音乐播放器、学生管理系统(),邮件客户端(),Web论坛()可以开发游戏、网络程序、网站程序等。C语言什么都可以开发
3、准备工作,安装VC6(在网上搜“Visual C++ 6”,找合适的地址下载)。VC6在Vista、Windows下启动可能有兼容性提示。
3、开始做第一个C语言的程序
【文件】→【新建】,打开【工程】选项页,选择【Win32 Application】(不要选错了),在“位置”中修改工程保存的路径。(以前用Tubor C的同学会问“什么叫工程?”。在以前大家用TurboC写的程序一般也就是一个文件,但是用C语言写大程序的时候不可能把所有的代码都写在一个文件中,肯定要写很多文件。“工程(Project)”就是这些文件的一个集合。)在“工程名”中写入你为这个工程取的名字,最好有一定意义。下一步【一个简单的Windows程序】
4、向Windows的世界问好
MessageBox(NULL,TEXT(“世界你好”),TEXT(“问好”),MB_OK);
VC6在Vista、Windows下编译调试时可能有兼容性提示。
5、学本课程常见问题
(1)为什么不用TurboC?
Turbo C(Win-TC)太老了,界面还是DOS界面,库也是DOS的库,没有网络开发包、没有Windows界面开发包。TC只能用来学C的基础,要进行实际开发必须使用先进一点的工具。还是让TurboC进博物馆吧。
(2)为什么不用更高版本的VC?
我们不使用高版本的VC主要是如下考虑:VC6和高版本的VC没有本质区别(VC6是1998年的东西,大部分人、公司还是用VC6,市面上的书也都是用VC6),只不过是升级了一下C++的版本、STL的版本而已,对咱们这次学习没有什么影响;VC6的操作方式和VC2008非常相似,用熟了VC6再学高版本的VC只用半小时而已;高版本的VC体积太大,要五六百兆,而上面给出的VC6只有100MB。VC2008下建立工程。
(3)学C语言还是学其他语言,用其他语言实现岂不是更好?
用最熟悉的语言深入编程的各个领域(网络、数据库、图形学、内核等),一通百通,一切语言都是纸老虎。参考资料如鹏网首页。
6、深入研究MessageBox
(1)MessageBox(NULL,TEXT(“世界你好”),TEXT(“问好”),MB_OK);
第一个参数暂时不讲;第二个是正文;第三个是标题(Caption);第四个是类型。
MB_OK就是表示有一个OK按钮【确定】
TEXT是一个宏,当字符串中有中文的时候最好用TEXT来包围这个字符串,虽然不使用TEXT在VC6中没问题,但是在VC7中有问题,而且微软也建议使用TEXT宏,因此在涉及到中文的场合要使用它。他的作用就是把中文转化成不会乱码的格式。(暂时这么认为)。_T(“问好”),其实_T只是TEXT的一个缩写而已。而且_T在有的低版本里不识别。TEXT()低版本也识别。暂时不用关心TEXT的细节。
换个样子:
MessageBox(NULL, TEXT(“世界你好”), TEXT(“你好”),MB_OKCANCEL);
可从设置希望在对话框中显示的按钮:
#define MB_OK0x00000000L
#define MB_OKCANCEL0x00000001L
#define MB_ABORTRETRYIGNORE0x00000002L
#define MB_YESNOCANCEL0x00000003L
#define MB_YESNO0x00000004L
#define MB_RETRYCANCEL0x00000005L
也可以设置对话框中显示的图标:
#define MB_ICONHAND0x00000010L
#define MB_ICONQUESTION0x00000020L
#define MB_ICONEXCLAMATION0x00000030L
#define MB_ICONASTERISK0x00000040L
比如:MessageBox(NULL, TEXT(“世界你好”),TEXT(“你好”),MB_ICONQUESTION);
(2)可是如果我想显示“确定、取消”按钮的时候同时使用问号图标呢? MessageBox(NULL, TEXT(“世界你好”), TEXT(“你好”),MB_OKCANCEL| MB_ICONQUESTION);
MessageBox(NULL, TEXT(“世界你好”), TEXT(“你好”),MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION);
(3)思考:
到这一步如果你只是在背诵“第一组和第二组中间放一个竖线就可以实现两种效果的组合形式”,那么你未来只会成为一个代码工人。我们要思考一下其背后的原理。
“|”是什么意思?“|”是位运算里的“或”运算,只有对应的两个二进位有一位为1时,结果位才为1,否则为0。MB_OK、MB_OKCANCEL等的低四位不同,但是高位永远为0;MB_ICONHAND、MB_ICONQUESTION等的低5至第8位不同,而其他位永远为0。这样“MB_OK、MB_OKCANCEL”组的数值与“MB_ICONHAND、MB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。
这种风格叫“掩码”,在Windows编程中这种用法会经常用到。
(4)返回值
MessageBox是有返回值的,返回值为用户点击的按钮:
#define IDOK
1#define IDCANCEL
2#define IDABORT
3#define IDRETRY
4#define IDIGNORE
5#define IDYES6
#define IDNO7
代码:
int ret = MessageBox(NULL, TEXT(“你是人吗?”), TEXT(“火星人”),MB_YESNO | MB_ICONQUESTION);
if(ret==IDYES)
{
MessageBox(NULL, TEXT(“火星人你好”), TEXT(“问好”),MB_OK);}
else
{
MessageBox(NULL, TEXT(“欢迎回家来”), TEXT(“问好”),MB_OK);}
6、课后作业:自己动手写恶搞程序。
运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“你看你就不像好人,点击【确定】开始格式化C盘!”;如果点击【否】,则弹出对话框(有【重试】、【取消】两个按钮)“尝试把你变成好人失败,是否重试?”。
别把教学视频当电影看!多练!多写
第五篇:C语言也能干大事 板书 第二节
板书:
运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“你看你就不像好人,点击【确定】开始格式化C盘!”;如果点击
【否】,则弹出对话框(有【重试】、【取消】两个按钮)“尝试把你变成好人失败,是否重试?”。
1、怎么生成exe程序。怎么把做好的exe程序发给别人?
在我的电脑里直接进入工程文件夹。工程目录下生成的debug/release文件就是生成好的可执行文件,发给别人就可以。Debug和Release版本区别。怎么生成Release版本。
1、对话框程序
VC6下安装Win32 DialogBased Application
VC2008下安装Win32 DialogBased Application
如鹏的Win32 DialogBased Application没有做神奇的事情,只是简化了创建的过程,大家也可以手工创建,创建的代码可以在没有安装Win32 DialogBased Application Wizard的机器上用。演示在2008上从win32application 创建一个Win32 DialogBased Application。
在资源编辑器中编辑对话框界面并且拖放控件上去。试试常用的那些控件
什么是属性。
作业:开发一个注册界面。
2、常见问题
(1)开发Windows程序有什么前途?不要急于求成,用自己最熟悉的语言探索编程的各个方面,内核级开发、数据库、网络、动态网站开发等。学《C语言也能干大事》的目的并不是直接找开发Windows程序的工作,只要锻炼了动手能力和一通百通的数据库、网络、动态网站开发、面向对象等技能,学什么东西、找什么工作都很轻松。
(2)学MFC不是更好?MFC乱七八糟的东西太多,隐藏了太多,隐藏不仅没有有利于初学者学习,反而使得更复杂。MFC只是一个稍微封装的SDK,学会了这里的课程如果又需要再去学MFC的话会发现90%是相同的。
3、对话框中图片资源的应用在资源视图中,选择“引入”,然后文件过滤器选择“*.*”,找到bmp图片文件。选中图片空间,要点击边缘。拖一个IMAGE控件过来,并且修改IMAGE控件的Type属性为BitMap,在控件的Image属性中选择刚才添加的BITMAP资源。jpg的格式怎么转换为bmp格式的呢?用画图工具(mspaint)。图片被编译到了程序中,不再依赖于源文件
4、菜单资源
制作好菜单资源后,在对话框的Menu属性中选择刚才制作好的对话框。子菜单项(选中【弹出】)、快捷键(在要担当快捷键的字母前加&)、分隔符
5、只有控件、菜单,可以点击控件、菜单以后的动作怎么做呢?就要写代码了。后面会讲