⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm_client_dce.c

📁 linux 多线程例子
💻 C
字号:
/******************************************************** * An example source module to accompany... * * "Using POSIX Threads: Programming with Pthreads" *     by Brad nichols, Dick Buttlar, Jackie Farrell *     O'Reilly & Associates, Inc. * ******************************************************** * atm_client_dce.c --  * * Client ATM code, DCE version * */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <dce/utc.h>#include <dce/dce_error.h>#include "atm_dce_interface.h"#include "atm_dce.h"#define CINTERFACE_SPEC     atm_v1_0_c_ifspecmain(){  char answer[100];  int done = 0;  char temp;  int  success, account, password, amount;  char err_msg[ERR_MSG_SIZE];   rpc_ns_handle_t         import_context;   unsigned32              status;   error_status_t          rpc_comm_status;   rpc_binding_handle_t    binding_handle;   unsigned char server_name[]=SERVER_NAME;      /******  import binding info from name space ******/   rpc_ns_binding_import_begin (				rpc_c_ns_syntax_default,				server_name,				CINTERFACE_SPEC,				NULL,				&import_context,				&status);      if (status != rpc_s_ok)  {     REPORT_DCE_ERROR (status);     exit(1);   }      rpc_ns_binding_import_next (import_context, &binding_handle, &status);   if (status != rpc_s_ok)  {     REPORT_DCE_ERROR (status);   }   rpc_ns_binding_import_done (&import_context, &status);   if (status != rpc_s_ok) {     REPORT_DCE_ERROR (status);     exit(1);   }   if (binding_handle == NULL) {     printf("No Binding Handle found\n");     exit(1);   } else {     /* DPRINT_BINDING(binding_handle);*/ }   /**** get on with life ****/  for(;;) {    printf("\nWelcome to Your Bank ATM:\n");    printf("Open New Account, Type : O \n");    printf("Deposit,          Type : D account password amount\n");    printf("Withdrawal,       Type : W account password amount\n");    printf("Balance,          Type : B account password \n");     printf("Kill Server,      Type : K server_password \n");     printf("Quit,             Type : Q \n");   	        printf(" What transaction would you like to perform\n? ");        gets(answer);            switch((int) answer[0]) {            case 'O':      case 'o':                open_account(binding_handle,                        (idl_long_int *)&account,                        (idl_long_int *)&password,			(idl_long_int *)&success,			(idl_char *)err_msg);                if (success) {	          printf("Your transaction has been completed\n");		  printf("Your new account id is %d with passwd %d\n",			 account, password);	        } else {		  printf("Your transaction failed\n");		  printf("%s\n", err_msg);		}		break;      case 'D':      case 'd':	        sscanf(answer, "%c %d %d %d",		       &temp, &account, &password, &amount);		deposit(binding_handle,                        (idl_long_int *)&account,                        (idl_long_int *)&password,                        (idl_long_int *)&amount,			(idl_long_int *)&success,			(idl_char *)err_msg);		if (success) {		  printf("Your transaction has been completed\n");                } else {		  printf("Your transaction failed\n");		  printf("%s\n", err_msg);		}	        break;      case 'W':      case 'w':	        sscanf(answer, "%c %d %d %d",		      &temp, &account, &password, &amount);		withdraw(binding_handle,                        (idl_long_int *)&account,                        (idl_long_int *)&password,                        (idl_long_int *)&amount,			(idl_long_int *)&success,			(idl_char *)err_msg);		if (success) {		  printf("Your transaction has been completed\n");                } else {		  printf("Your transaction failed\n");		  printf("%s\n", err_msg);		}	        break;      case 'B':      case 'b': 	        sscanf(answer, "%c %d %d", &temp, &account, &password);		balance(binding_handle,                        (idl_long_int *)&account,                        (idl_long_int *)&password,			(idl_long_int *)&success,                        (idl_long_int *)&amount,			(idl_char *)err_msg);		if (success) {		  printf("Your transaction has been completed\n");		  printf("Your account balance is %d", amount);                } else {		  printf("Your transaction failed\n");		  printf("%s\n", err_msg);		}	        break;      case 'K':      case 'k':	        sscanf(answer, "%c %d", &temp, &password);		shutdown_server(binding_handle,                        (idl_long_int *)&password,			(idl_long_int *)&success,			(idl_char *)err_msg);		if (success) {		  printf("Your transaction has been completed\n");                } else {		  printf("Your transaction failed\n");		  printf("%s\n", err_msg);		}	        break;      case 'Q':      case 'q':	        done = 1;	        break;      default: 	        break;	     }        if(done) break;      }}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -