- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2010-07-06 15:47 编辑
回复 30# samlumengjun
这是需要在应用函数里做的。有的服务可以没有回执,如net_showlog,有的服务需要多次交互,如get_file,这些具体的流程都由应用函数处理,客户端和服务器的应用函数自行约定协议内容和流程。协议头是由框架规定的。
比方这个Echo服务:- #include <scsrv.h>
- int Echo(T_Connect *connect,T_NetHead *NetHead)
- {
- if(NetHead->PKG_LEN) {
- ShowLog(5,"PROTO_NUM=%d,data=%s",
- NetHead->PROTO_NUM,NetHead->data);
- }
- NetHead->PROTO_NUM=PutEvent(connect,NetHead->PROTO_NUM);
- NetHead->ERRNO1=0;
- NetHead->ERRNO2=0;
- NetHead->PKG_REC_NUM=0;
- NetHead->O_NODE=ntohl(LocalAddr(0,0));
- reversln(NetHead->data);
- SendPack(connect,NetHead);
- return 0;
- }
复制代码 而服务器需要安排一个函数表,如下,就是thread_work调用的了。- srvfunc Function[]={
- {login,"login"}, /*0 login.c */
- {Echo,"Echo"}, /*1*/
- {Rexec, "Rexec"},
- {GetFile,"GetFile"},
- {PutFile,"PutFile"},
- {Pwd,"Pwd"},
- {filels,"filels"},
- {SQL_Select,"SQL_Select"},
- {page_select,"page_select"},
- {dui_svc,"dui_svc"},
- {SQL_RPC,"SQL_RPC"},
- {net_showlog,"net_showlog"},
- {0,0}
- };
复制代码 |
|