菜单

互联网编制程序1. 套接字编程基本知识

2019年3月21日 - www6165com

#include
<Windows.h>

    char buf[255];

操作系统实验及代码(全),操作系统实验代码

操作系统是总结机有关规范的一门极其主要的专业课,但实验课的时候很三人不了然代码应该怎么写,那里贴出博主使用过的一部分,亲测可行。 

}

     欢迎来到windows编制程序的世界,先给我们的windows打个招呼吧:

 

题材1:Windows进程的创造与销毁

履新时间:2017-10-26

剧情及要求:


了解Windows进度的创导和销毁API的调用方法;编制程序代码,在程序中开创和销毁三个Word进度;

② 能够挂起和激活被创建进度的主线程;

③ 通过Windows进程管理器查看系统经过列表的变化。

试验辅导:

①成立进程的API

BOOL CreateProcess(

  LPCTSTR lpApplicationName,

  LPTSTR lpCommandLine,

  LPSECURITY_ATTRIBUTES lpProcessAttributes,

  LPSECURITY_ATTRIBUTES lpThreadAttributes,

  BOOL bInheritHandles,

  DWORD dwCreationFlags,

  LPVOID lpEnvironment,

  LPCTSTR lpCurrentDirectory,

  LPSTARTUPINFO lpStartupInfo,

  LPPROCESS_INFORMATION lpProcessInformation

);

例程:

 1 void main( VOID ){
 2     STARTUPINFO si;
 3     PROCESS_INFORMATION pi;
 4     ZeroMemory( &si, sizeof(si) );
 5     si.cb = sizeof(si);
 6     ZeroMemory( &pi, sizeof(pi) );
 7     // Start the child process. 
 8     if( !CreateProcess( NULL, // No module name (use command line). 
 9         "MyChildProcess", // Command line. 
10         NULL,             // Process handle not inheritable. 
11         NULL,             // Thread handle not inheritable. 
12         FALSE,            // Set handle inheritance to FALSE. 
13         0,                // No creation flags. 
14         NULL,             // Use parent's environment block. 
15         NULL,             // Use parent's starting directory. 
16         &si,              // Pointer to STARTUPINFO structure.
17         &pi )             // Pointer to PROCESS_INFORMATION structure.
18         ) {
19             ErrorExit( "CreateProcess failed." );
20     }
21     // Wait until child process exits.
22     WaitForSingleObject( pi.hProcess, INFINITE );
23     // Close process and thread handles. 
24     CloseHandle( pi.hProcess );
25     CloseHandle( pi.hThread );
26 }

销毁进度API

BOOL TerminateProcess(

  HANDLE hProcess,

  UINT uExitCode

);

③ 挂起经过的主线程API

DWORD SuspendThread(

  HANDLE hThread

);

④激活进度的主线程API

DWORD ResumeThread(

  HANDLE hThread

);

⑤过程查看器

1 #include<iostream> 2 #include<windows.h> 3 using
namespace std; 4 void main( VOID ) 5 { 6 STARTUPINFO si; 7
PROCESS_INFORMATION pi; 8 /** 9 * 那里填个人的word可执行文件的路径
10 * ps:”\”要求展开转义 11 **/ 12 TCHAR
szCommandLine[]=TEXT(“D:\\Microsoft
Office\\Office14\\WINWORD.EXE”); 13 ZeroMemory(&si, sizeof(si) ); 14
si.cb= sizeof(si); 15 ZeroMemory(&pi, sizeof(pi) ); 16
if(!CreateProcess( NULL, szCommandLine, NULL,NULL, FALSE,0,NULL,
NULL,&si,&pi ) ) 17 { 18 fprintf(stderr,”进程创制退步!”); 19 } 20 int
x; 21 while(1) 22 { 23 cout <<
“请输入要采纳的操作:\n1:创立进度\n2:销毁进度\n3:挂起经过\n4:激活进度\n0:退出\n”;
24 cin >> x; 25 switch(x) 26 { 27 case 1: 28 if(CreateProcess(
NULL, szCommandLine, NULL,NULL, FALSE,0,NULL, NULL,&si,&pi ) ) 29
fprintf(stderr,”进度创立成功!”); 30 else 31 cout <<
“进度制造战败!”<<endl; 32 break; 33 case 2: 34
if(TerminateProcess(pi.hProcess,0)) 35
cout<<“销毁进度成功”<<endl; 36 else 37
cout<<“销毁战败!”<<endl; 38 break; 39 case 3: 40
if(SuspendThread(pi.hThread)) 41 cout<<“挂起进程成功”<<endl;
42 else 43 cout<<“挂起退步”<<endl; 44 break; 45 case 4: 46
if(ResumeThread(pi.hThread)) 47 cout<<“激活进度成功”<<endl;
48 else 49 cout<<“激活失利”<<endl; 50 break; 51 case 0: 52
exit(0); 53 default: 54 cout<<“输入有误不科学”<<endl; 55 }
56 } 57 }

 

持续立异中!!!

 

作者:耑新新,发布于  博客园

转发请证明出处,欢迎邮件调换:[email protected]

操作系统是计算机有关标准的一门极其首要的专业课,但实验课的时候很多人不清楚代码应…

int WINAPI WinMain(

   所谓windows编制程序便是指通过调用Windows
API来和操作系统交互的编制程序格局。API就是与操作系统交互的各类成效函数,MessageBox就是2个API,调用它就足以弹出3个对话框。

        for(int i = 0; pht->h_addr_list[i] !=
NULL;i++){

MessageBox(

       *system*(“pause”);

    WSACleanup();// 达成清理工科作

除却按钮,uType 还帮助图标(图标对用户有提示成效):

using namespace  std;

    SOCKET serverSocket =
socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

HINSTANCE hPrevInstance, //
前多个窗口句柄,Win32下为NULL(Win16雁过拔毛的污物,近来已弃用)

       {

        exit(-1);

}

       if(iSelect==IDOK)

hostent* pht =
gethostbyname(“www.google.com”);

){

       {

    if( gethostname(buf,sizeof(buf)) ==
SOCKET_ERROR  ){

金沙国际 1

              *cout<<“you select cancel”<<endl*;

int main(){

先不要解决难题过于急躁驾驭那么些参数的意义,小编先给我们写3个简单的不带黑屏的、真正的Windows程序:

{

        cout << “h_length:” <<
pht->h_length << endl;

uType 支持的按钮样式:

       return  0;

        cout << “成功绑定端口:” << listen_port << endl;

#define MB_OKCANCEL 0x00000001L

       }

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

对Yu Gang刚学完C语言的,学windows编制程序的,那几个都以满满的干货,一定要记住喔。从你学windows编制程序开始,你就早已告别了羞耻的windows
do界面,只要一步一步走,写1个不错的window程序不在话下。那些都以随后学习总得明白的,先收藏吧!

#include
<iostream>

         那里运用的是编写翻译语句#pragma comment(lib,”ws2_32.lib”) 相当于将ws2_32.lib静态链接库参加到项目中,效果和丰盛引用是一律的。

#define MB_ICONEXCLAMATION 0x00000030L

int  main()

        Sleep(3000);

再看来一下MessageBox() 的再次来到值。

       }else

        Sleep(3000);

控制台程序以 main() 为入口函数,Windows程序以 WinMain()
为入口函数,动态链接库以 DllMain()
为入口函数,不一致的入口函数决定了分化门类的次第。

       int iSelect=MessageBox(NULL,TEXT(“你好,windows世界,我来了!”),TEXT(“你好,世界”),MB_OKCANCEL);

         要求运用in_addr 类型保存二个IP地址,并且需求将IP地址转换来为字符串的格式,使用的是const char * inet_ntoa(in_addr in); 将pht->h_addr_list[i] 转换来为(in_addr*)的指针,然后再经过指针获取器内容,转换来为字符串的款型。

总结:

}

        cout << “h_addrtype:” << 
pht->h_addrtype << endl;

#define MB_ICONQUESTION 0x00000020L

              *cout<<“you select ok “<<endl*;

    if(pht==NULL){

MessageBox(NULL, TEXT(“你好,欢迎源世界你!”), TEXT, 1);

    return 0;

int nSelect = MessageBox(NULL, TEXT, TEXT(), MB_OKCANCEL);

    serverAddress.sin_family = AF_INET;

金沙国际 2

3.广泛的一对函数在WinSocket编制程序中选拔的牵线

uType:对话框的按钮样式和图标。

        cout << “获取当地主机的Name失败:”<<WSAGetLastError()<< SOCKET_ERROR <<
endl;

这么些头文件定义了Windows的富有数据类型、函数原型、数据结构和标志常量,约等于说,全部的Windows
API都在那一个头文件中扬言。

    }

int nCmdShow // 窗口展现格局

        Sleep(3000);

金沙国际 3金沙国际 4金沙国际 5

         ws2_32.lib对应的是ws2_32.dll,提供对于广大网络编制程序的API接口帮忙,使用其中的互连网接口就必要将ws2_32.dll添加到工程,不然要求动态的加载ws2_32.dll。

int WINAPI WinMain(

#include <process.h>

winbase.h:内核函数

        cout << “套接字伊始化退步”<<  endl;

HINSTANCE hPrevInstance,

#include <iostream>

WINAPI 为宏定义

        int addrlen = sizeof(clientAddress);

金沙国际 6

       
memset(&clientAddress,0,sizeof(clientAddress));

LPSTR lpCmdLine,

                  
wVersionRequest: 3个双字节数值, 使用MAKEWOHighlanderD(2,2)生成;

#define MB_RETRYCANCEL 0x00000005L

    hostent* pht = gethostbyname(buf);

int nCmdShow

 

TEXT,

using namespace std;

int WINAPI MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,
UINT uType );

        }

与地点的对话框相比较,多出了1个图标,同时仍是能够听到提醒音。是不是多了3个提醒标志在文字的前方啊。

        }

#define MB_ABORTRETRYIGNORE 0x00000002L

 

金沙国际 7

 

在C语言中,程序都以“黑屏”的,称为控制台程序(Console
Application)。那套教程要讲的是带界面包车型的士Windows程序(Windows
Application),也号称GUI程序(GUI Application)。

    }else{

#define MB_YESNOCANCEL 0x00000003L

        cout << “yang” << endl;

金沙国际 ,lpText:消息框的始末。LPCTST牧马人 是自定义数据类型,等价于 const char *。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图