10 2 2 客戶端流程分析

2021-04-17 01:13:04 字數 1881 閱讀 3439

客戶端主要包括以下主要函式過程:初始化

ssl演算法函式、連線並接收伺服器訊息執行緒函式、向伺服器傳送訊息函式。

1

.初始化

ssl演算法

此過程的**新增在

oninitdialog

方法中。處理過程如下:(1

)初始化

openssl

演算法庫ssl_load_error_strings();

ssleay_add_ssl_algorithms();(2

)初始化

ssl客戶端協議演算法

ctx = ssl_ctx_new (sslv23_client_method());//

設定ssl

協議版本

其處理流程圖如圖

所示:2

.連線並接收伺服器訊息執行緒函式

連線伺服器端,並接收伺服器端訊息的執行緒處理函式

void clientthreadproc(void* void_parm)

。通過createthread

呼叫該函式。其處理過程如下:(1

)初始化

windows socket

環境if (wsastartup(makeword(1, 1), &wsadata))(2

)初始化

sockaddr_in

結構體,設定伺服器位址和埠。

//新建

socket

sd = socket (af_inet, sock_stream, 0);

memset (&sa, '/0', sizeof(sa));

//設定服務端

ip位址、和埠

sa.sin_family= af_inet;

sa.sin_addr.s_addr = dwip;

sa.sin_port= htons(8443);(3

)連線伺服器。

err = connect(sd, (struct sockaddr*) &sa,sizeof(sa)); (

4)新建

ssl連線控制代碼。

ssl = ssl_new (ctx);(5

)設定socket

控制代碼到ssl

控制代碼。ssl_set_fd (ssl, sd);(6

)建立ssl

鏈結。err = ssl_connect (ssl);(7

)呼叫select

非同步等待伺服器端訊息。

for(;;)

buffer[len]='/0';

char *msg = (char *)malloc(len +1);

strcpy(msg,buffer);

//通過

wm_client_msg

訊息,傳送到主窗體

sendmessage(afxgetmainwnd()->getsafehwnd(),wm_client_msg,sd,(long )msg);

}其處理過程如圖

所示:

3

.向伺服器端傳送訊息函式

直接呼叫

ssl_write

,向伺服器傳送訊息。在

void cclientdlg::onsend()

函式新增如下**:

if(client.fd !=0)

else

同時伺服器端和客戶端都使用了自定義的

windows

訊息wm_client_msg

,處理執行緒傳送到主窗體的資料。

XFire客戶端流程分析及案例

下面是xfire客戶端呼叫的流程分析圖,本文後續部分將圍繞該圖展開。服務模型是xfire中非常重要的概念之一,包含了服務的介面資訊 操作資訊 binding資訊等諸多服務呼叫過程中需要的資訊。因此在進行服務呼叫之前首先要建立服務模型。建立服務模型的工作是由服務工廠servicefactory完成的,...

客戶端提交mr job原始碼流程分析

job job.getinstance獲得job物件 job.set 新增configuration等配置引數 job.waitforcomplete 原始碼內部實則呼叫submit 方法 之後jobsubmiter中有個成員cluster cluster中又有個成員proxy 物件,幫助提交到ya...

NFS客戶端流程理解

系統呼叫 vfs readir inode i fop 這是在inode初始化時候,填入的鉤子函式,一般會填成nfs的函式nfs readdir nfs readdir 先在快取中查詢,如沒找到,則傳送乙個rpc操作號給伺服器,伺服器接收到操作號。呼叫對應的procedure,然後呼叫vfs的 co...