1. 如何用C语言检测网络是否连接上、已连接、已断开状态
如果对方断开连接的话,冲败那么readNum = recv ( socketId, rcvBuf, rcvBufSize, 0 );
readNum返回值应该是0,可以根据返回值局袭判断
还有一种办法,就是做一个心跳检测,定时发送消息,如果发送失败就知道对方不散腊颤在了
2. 如何用c语言程序获取计算机信息
开机密码不能获取哦。用户名很简单。只要用个GetUserName这个API就行了。详细的代码我给你看看:
//#include"stdafx.h"
//#include"GetSysInfo.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
CWinApptheApp;
usingnamespacestd;
//获取CPU相关信息
voidGetCPUInfo()
{
CStringCPU;
SYSTEM_INFOsysteminfo;
//获取CPU型号
GetSystemInfo(&systeminfo);
switch(systeminfo.dwProcessorType)
{
casePROCESSOR_INTEL_386://386系列
CPU="PROCESSOR_INTEL_386";
break;
casePROCESSOR_INTEL_486://486系列
CPU="PROCESSOR_INTEL_486";
break;
casePROCESSOR_INTEL_PENTIUM://奔腾系列
CPU="PROCESSOR_INTEL_PENTIUM";
break;
casePROCESSOR_MIPS_R4000:
CPU="PROCESSOR_MIPS_R4000";
break;
casePROCESSOR_HITACHI_SH3:
CPU="PROCESSOR_HITACHI_SH3";
break;
casePROCESSOR_HITACHI_SH4:
CPU="PROCESSOR_HITACHI_SH4";
break;
casePROCESSOR_STRONGARM:
CPU="PROCESSOR_STRONGARM";
break;
casePROCESSOR_ARM720:
CPU="PROCESSOR_ARM720";
break;
default:
CPU="UnknownType";
break;
}
printf(" CPU银茄旦型号:%s ",CPU);
}
//获取内存信息
voidGetMemoryInfo()
{
CStringMemoryTotal;//总内存大小
CStringMemoryAvail;//可用内存大小
MEMORYSTATUSmemory;
memory.dwLength=sizeof(memory);//初始化
//获取内存信息
GlobalMemoryStatus(&memory);
MemoryTotal.Format(_T("%dMb"),int(memory.dwTotalPhys/1024/1024));
MemoryAvail.Format(_T("锋扰%dMb"),int(memory.dwAvailPhys/1024/1024));
printf("主机总内存:%s ",MemoryTotal);
printf("主机可用内存:%s ",MemoryAvail);
}
//获取磁盘信息
voidGetDiskInfo()
{
DWORDsector,byte,cluster,free;
longintfreespace,totalspace;
UINTtype;
charname;
CStringstrname;
//循环检测A~Z,找到磁盘即输出
//0—未知盘、1—不存在、2—可移动磁盘、3—固定磁盘
//4—网络磁盘、5—CD-ROM、6—内存虚拟盘
for(name='A';name<='Z';name++)
{
strname.Format(_T("%c:"),name);
type=GetDriveType(strname);//获纳段得磁盘类型
switch(type)
{
case0:
printf("未知类型磁盘:%s",strname);
break;
case2:
printf("可移动类型磁盘:%s",strname);
break;
case3:
printf("固定磁盘:%s",strname);
break;
case4:
printf("网络映射磁盘:%s",strname);
break;
case5:
printf("光驱:%s",strname);
break;
case6:
printf("内存虚拟磁盘:%s",strname);
break;
default:
break;
}
if(type!=1)
{
//获取磁盘空间信息
GetDiskFreeSpace(strname,§or,&byte,&free,&cluster);
//磁盘总大小
totalspace=int(cluster)*byte*sector/1024/1024;
//磁盘可用空间大小
freespace=int(free)*byte*sector/1024/1024;
printf("总大小%dMb",totalspace);
printf("可用空间%dMb",freespace);
printf(" ");
}
}
}
int_tmain(intargc,TCHAR*argv[],TCHAR*envp[])
{
intnRetCode=0;
//
if(!AfxWinInit(::GetMoleHandle(NULL),NULL,::GetCommandLine(),0))
{
//TODO:
cerr<<_T("FatalError:MFCinitializationfailed")<<endl;
nRetCode=1;
}
else
{
//TODO:codeyourapplication'sbehaviorhere.
//输出CPU信息
GetCPUInfo();
//输出内存信息
GetMemoryInfo();
//输出磁盘信息
GetDiskInfo();
}
returnnRetCode;
}
其中获取了系统的很多相关信息。像cpu内存硬盘用户名等等。你可以参考一下,呵呵。
3. 基于c语言,网络编程,服务器接收客户端1的信息发送给客户端2
char buff2[1024*10];
int receiveLen;
/*调粗尘用accept函数,等待客户端的连接*/
client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size
/*调用recv函数接岩源禅收客户端的请求*/
recvbytes=recv(client_fd,buf,BUFFER_SIZE,0)
typedef int (WINAPI ICEPUB_TCPSENDANDRECEIVETEXT)(char *sendBuff, int sendBuffLen,char *recvBuff,int recvMaxLen,char* serverIP,int serverPort);
ICEPUB_TCPSENDANDRECEIVETEXT *icePub_tcpSendAndReceiveText = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll"裂洞);
if(hDLLDrv)
{
icePub_tcpSendAndReceiveText=(ICEPUB_TCPSENDANDRECEIVETEXT *)GetProcAddress(hDLLDrv,"icePub_tcpSendAndReceiveText");
}
if(icePub_tcpSendAndReceiveText)
receiveLen=icePub_tcpSendAndReceiveText(buf,recvbytes),buff2,1024*10,"192.168.1.2",8000);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox(buff2);
4. C++/C语言程序.用户网络登录信息管理
#include<string>
#include<list>
#include<iostream>
#include<fstream>
usingnamespacestd;
typedefstruct_USER_INFO{
stringstrName;
intnLoginTime;
intnLogoutTime;
}USER_INFO,*PUSER_INFO;
list<USER_INFO>UserInfoList;
voidInsert()
{
USER_INFOui;
cout<<"输入用户名:";
cin>>ui.strName;
cout<<"上线时间:";
cin>>ui.nLoginTime;
cout<<"下线时间:";
cin>>ui.nLogoutTime;
UserInfoList.push_back(ui);
cout<<"录入完成!"<<endl;
}
voidfind()
{
stringstrUserName;
cout<<"输入用户名:";
cin>>strUserName;
boolbFind=false;
list<USER_INFO>::const_iteratoriter=UserInfoList.begin();
for(;iter!=UserInfoList.end();iter++)
{
if(strUserName==iter->strName)
{
cout<<"该用户信息如下:"<<endl;
cout<<"用户名:"<<iter->strName<<endl;
cout<<"上线时间:"<<iter->nLoginTime<<endl;
cout<<"下线时间:"<<iter->nLogoutTime<<endl;
bFind=true;
break;
}
}
if(bFind==false)
cout<<"无此用户!"<<endl;
}
voidCalcUserTime()
{
list<USER_INFO>::const_iteratoriter=UserInfoList.begin();
for(;iter!=UserInfoList.end();iter++)
{
cout<<"用户名:"<<iter->strName<<endl;
cout<<"上网时间:"<<iter->nLogoutTime-iter->凳绝闭nLoginTime<<"秒"<<endl;
cout<<"------------"<<endl;
}
}
voidSaveToFile()
{
charfilename[]="c:\用户网络登录信息枣裂.txt";
ofstreamfout(filename);
fout<<"用户名 上线时间 离线时间"<<endl;
list<USER_INFO>::const_iteratoriter=UserInfoList.begin();
for(;iter!=UserInfoList.end();iter++)
{
fout<<iter->strName<<" ";
fout<<iter->nLoginTime<<" ";
fout<<iter->nLogoutTime<<endl;
}
cout<<"保存成功!"<<endl;
}
voidmain()
{
while(1)
{
cout<<endl;
cout<<"1.录入数据"<<endl;
cout<<"2.查询用户信息"<<endl;
cout<<"3.统计上网时间"<<endl;
cout<<"4.保存到文件"<<endl;
cout<<"5.退出"<<endl;
cout<<"---------------------------"<宏肆<endl;
cout<<"输入操作码:";
intnInput;
cin>>nInput;
cout<<"------------"<<endl;
switch(nInput)
{
case1:Insert();break;
case2:find();break;
case3:CalcUserTime();break;
case4:SaveToFile();break;
case5:exit(0);
default:cout<<"输入有误,重新输入:";
}
}
}
5. 跪求用C语言编写一份完整的关于物联网的定位和信息采集的毕业设计和论文
标题的样式还有多种,作者可以在实践中大胆创新。
副标题和分标题
为了点明论文的研究对象、研究内容、研究目的,对总标题加以补充、解说,有的论文还可以加副标题。非凡是一些商榷性的论文,一般都有一个副标题,如在总标题下方,添上“与××商榷”之类的副标题。
另外,为了强调论文所研究的某个侧重面,也可以加副标题。如《如何看待现阶段劳动报酬的差别——也谈按劳分配中的资产阶级权利》、《开发蛋白质资源,提高蛋白质利用效率——探讨解决吃饭问题的一种发展战略》等。
设置分标题的主要目的是为了清楚地显示文章的层次。有的用文字,一般都把本层次的中心内容昭然其上;也有的用数码,仅标明“一、二、三”等的顺序,起承上启下的作用。需要注重的是:无论采用哪种形式,都要紧扣所属层次的内容,以及上文与下文的联系紧密性。
目录
一般说来,篇幅较长的毕业论文,都没有分标题。设置分标题的论文,因其内容的层次较多,整个理论体系较庞大、复杂,故通常设目录。
设置目录的目的主要是:
1.使读者能够在阅读该论文之前对全文的内容、结构有一个大致的了解,以便读者决定是读还是不读,是精读还是略读等。
2.为读者选读论文中的某个分论点时提供袭脊方便。长篇论文,除中心论点外,还有许多分论点。当读者需要进一步了解某个分论点时,就可以依靠目录而节省时间。
目录一般放置在论文正文的前面,因而是论文的导读图。要使目录真正起到导读图的作用,必须注重:
1.准确。目录必须与全文的纲目相一致。也就是说,本文的标题、分标题与目录存在着一一对应的关系。
2.清楚无误。目录应逐一标注该行目录在正文中的页码。标注页码必须清楚无误。
3.完整。目录既然是论文的导读图,因而必然要求具有完整性。也就是要求文章的各项内容,都应在目录中反映出来,不得遗漏。
目录有两种基本类型:
1.用文字表示的目录。
2.用数码表示的目录。这种目录较少见。但长篇大论,便于读者阅读,也有采用这种方式的。
内容提要
内容提要是全文内容的缩影。在这里,作者以极经济的笔墨,勾画出全文的整体面目;提出主要论点、揭示论文的研究成果、简要叙述全文的框架结构。
内容提要是正文的附属部分,一拍蠢渗般放置在论文的篇首。
写作内容提要的目的在于:
1.为了使指导老师在未审阅论文全文时,先对文章的主要内容有个大体上的了解,知道研究所取得的主要成果,研究的主要逻辑顺序。
2.为了使其他读者通过阅读内容提要,就能大略了解作者所研究的问题,假如产生共鸣,则再进一步阅读全文。在这里,内容提要成了把论文推荐给众多读者的“广告”。
因此,内容提要应把论文的主要观点提示出来,便于读者一看就能了解论文内容的要点。论文提要要求写得简明而又全面,不要啰哩啰嗦抓不住要点或者只是干巴巴的几条筋,缺乏说明观点的材料。
内容提要可分为报道性提要和指示性提要。
报道性提要,主要介绍研究的主要方法与成果以及成果分档漏析等,对文章内容的提示较全面。
指示性提要,只简要地叙述研究的成果(数据、看法、意见、结论等),对研究手段、方法、过程等均不涉及。毕业论文一般使用指示性提要。
6. 如何用C/C++编程,获取网络接口数据
获取网络借口数据?
是要过滤收发数据么?
过滤收发数据方法很多
用户层下的SPI接口可以做,不过比较简单,功能受限制
驱动层有NIDS过滤驱动可以实现,功能比较强大,商业防火墙等软件都是采用该方法实现的。
当然还有更底层的Hook过滤,不过实现更复杂,
7. 用C语言实现一个复杂网络拓扑结构的消息传递过程
这个比较复杂啊,我也不会
8. 在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库
需要用到的头文件包含:
#include <winsock2.h>
#include <windows.h>
与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库
Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:
Winsock 1:
Windows CE平台支持。
头文件:WinSock.h
库:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;
头文件:WinSock2.h
库:ws2_32.lib
mswsock.h用于编程扩展,使用时必须链接mswsock.dll
(8)如何用c收集网络信息扩展阅读
winsock库的加载与卸载:
加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
加载成功,返回值为0。
WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~
LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。
卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。
9. 网络时代你该如何利用软件快速收集有效信息
拿乐思网络信息采集系统为例,主要功能为:根据用户自定义的任务配置,批量而精确地抽取因特网目标网页中的半结构化与非结构化数据,转化为结构化的记录,保存在本地数据库中,用于内部使用或外网发布,快速实现外部信息的获取。乐思网络信息采集系统可用于:门户网站新闻采集,行业资讯采集,竞争情报获取,数据库营销等领域。
信息采集软件可对原始信息加以收集汇总,利用一定算法进行处理,最后提供增值的信息服务。那么在当今资讯发达的网络时代,如何才能合理利用软件快速、全面、准确的收集到对工作有参考价值的信息资料呢?
首先,理顺信息收集目的。
要弄清楚:收集信息资料是为了达成什么目的?要从这些信息资料得到什么结论?大概需要哪几个方面的信息资料?需要多长时间来收集?在收集各类信息时,要有严谨认真的态度。信息收集也要讲求“轻重缓急”,没有完成目的的意识,收集的信息就不具有任何意义。
其次,明确资料收集方向。
这样做的好处,就是收集到的信息资料更全面、系统,有利于整合。就比如,我们在服务某一客户时,往往需要收集行业趋势、市场环境、客户背景、客户竞争对手的信息资料等等。
第三、明确信息收集途径。
想清楚了自己需要什么,接下来就是清楚自己在哪能得到这些信息。如各种搜索引擎、行业网站、行业论坛、客户和竞争对手网站等等。
第四、及时调整收集任务。
信息的收集往往难以一次性完成,要善于发现和获取那些先兆性强、信息量大的信息资料;及时调整工作任务,在需要时进行补充性收集和追踪收集,以保证信息加工的需要,提高信息的质量。
第五、整合分析信息资料。
这一阶段主要是将收集来的信息资料及时汇总、分类、梳理,如调查报告,资料摘编、统计报表、情况反映等,送交信息加工部门。面对纷繁复杂的信息和事务,最需要的就是如何运用适当的思维方法和思维技巧对这些信息进行分析、归纳、判断和运用。未来的竞争完全可以理解为信息收集、运用、处理能力的竞争。
信息的收集不是一日之功,日积月累、坚持不懈才会有最终的收获。在当前经济社会中,信息具有极高的价值,越多地掌握信息就越能准确地预判出事物发展的趋势与结果,做出抉择时面临的风险也会降到最低。
10. C语言在通信方面的应用
如果你明白通信就是双方约定协议的过程就能明白了,C是用来编写通信协议的,把你的需要通信的内容通过c编写的转换驱动,编译成通信协议格式,发给对方,
说白了,C就是个工具,不一定C,basic也能写成XP,关键看你怎么用,Unix 都是C编写的,
单片机最好的驱动就是C了,移植性强,可读性好,定义也很方便,当年毕设都是用C编写51单片机的一个通信板驱动,
个人理解,通信就是握手。哈哈。