C语言也能干大事十一节(如鹏基础)
来源:互联网 发布:办公软件word2007 编辑:程序博客网 时间:2024/06/04 22:47
1、网络基本概念
讲解QQ的基本原理
讲解浏览器上网的基本原理
服务器:Server。提供服务的计算机。
客户端:Client。和服务器端交互的一个设备。
IP地址:计算机在网络中的地址。相当于每个家庭的电话。211.97.1.2
别名、域名:www.RuPeng.com。域名就相当于你家的地址。问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.com
3、
LastError
调用WindowsAPI的时候,每步执行完毕都会把执行结果放到LastError中去,所以应该在函数执行完毕立即去取。
DeleteFile(f1)
DeleteFile(f2)
GetLastError()
LastError只能容纳一个错误码
DeleteFile(f1)
GetLastError()
DeleteFile(f2)
GetLastError()
错误码。2233、344555
FormatMessage:把错误码转换为错误消息。
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)、模板代码
13 WSADATA wsaData;
14 //初始化Socket库
15 WSAStartup(MAKEWORD(2,0),&wsaData);
16 //创建一根电线
17 SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
18 SOCKADDR_IN sa;
19 sa.sin_family=AF_INET;
20 //设置电线连接服务器端的端口
21 sa.sin_port = htons(IPPORT_SMTP);
22 //123.125.50.135是ping smtp.163.com出来的,后面会讲使用gethostbyname来直接从
23 //主机名得到ip地址
24 sa.sin_addr.S_un.S_addr = inet_addr("123.125.50.135");
25 //为什么不用设置客户端的端口,难道不需要客户端的端口吗?
26 if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
27 {
28 ShowError();
29 return;
30 }
31 //做事情。把大象放冰箱总共分几步
32 closesocket(sock);
33 WSACleanup();
QQ服务器的端口8888。需要指定客户端的端口是9999.
端口有一个特点:排他性!端口已经被别的程序占用,不能再用这个端口。
开两个QQ。11111111111
22222222222 9999。如果端口可以被多个程序使用的话,QQ聊天服务器发过来的消息被多个QQ收到。很荒谬! 排他性!
如果在程序里写死了客户端用的端口。。。所以才需要Socket替客户端动态分配一个端口。所以不需要在程序中显示指定客户端的端口号!
客户端向服务器端发消息:send
服务器端想客户端发消息,客户端这边应该接收,recv。(receive)
SMTP服务器,你连上来以后服务器端主动向你发一条消息
recv(sock,buffer,256,0);
第一个是使用的socket,“导线”,套接字
接收数据的缓冲区的指针
接收数据的缓冲区的大小
0
send(sock,cQuit,lstrlen(cQuit),0);
第一个是使用的socket,“导线”,套接字
接收数据的缓冲区的指针
接收数据的缓冲区的大小
0
34 (4)一上来人家就主动和你唠嗑:
35 char buffer[256];
36 ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
37 //接收问候语
38 recv(sock,buffer,256,0);
39 MessageBox(hwnd,buffer,"",0);
40 (5)朋友再见
41 //注意不能忘了末尾的回车
42 TCHAR cQuit[] = "QUIT\n";
43 send(sock,cQuit,lstrlen(cQuit),0);
44
45 ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
46 //接收GoodBye
47 recv(sock,buffer,256,0);
48 MessageBox(hwnd,buffer,"",0);
- C语言也能干大事十一节(如鹏基础)
- C语言也能干大事第九节(如鹏基础)
- C语言也能干大事第十节(如鹏基础)
- C语言也能干大事第六节(如鹏基础)
- C语言也能干大事第七节(如鹏基础)
- C语言也能干大事第八节(如鹏基础)
- C语言也能干大事第十二节(如鹏基础)
- C语言也能干大事第十三节(如鹏基础)
- C语言也能干大事第十四节(如鹏基础)
- C语言也能干大事十五节
- c语言也能干大事
- c语言也能干大事
- C语言也能干大事
- C语言也能干大事
- C语言也能干大事
- c语言也能干大事!
- windows编程(C语言也能干大事视屏)
- listbox消息大全(C语言也能干大事)
- 获得验证码,显示PNG图片
- Oracle之AUTHID CURRENT_USER
- C语言也能干大事第十节(如鹏基础)
- 经典 网页 博客 评论 新闻 锚点 实例 代码
- 揭秘Amazon反应速度超快的下拉菜单
- C语言也能干大事十一节(如鹏基础)
- JAVA23种设计模式
- java文件读取
- Java笔记
- SSH log4j
- C语言也能干大事第十二节(如鹏基础)
- 调整 Xen 虚拟硬盘大小
- STM32 独立看门狗IWDG 与窗口看门狗WWDG
- 内存中加载flash.ocx控件并从内存中加载swf文件资源后播放之