サウンド・ソースのフレームワークを持っている必要があります良いプロジェクトを設計するには
関数ポインタとデータ処理のデータフィールドを有するボディ構造は、各ノード上で動作する空のリスト管理リストトラバーサルノードは、ノードを削除増加の機能を実現します
契約書に署名し、リストを管理するためのオブジェクトを追加するためにソケットを実装
リンクリスト(LinkListInit)オブジェクトを作成するための運用管理契約を達成するために、リストを使用して、
(テールがリストノード(RegisterProtocol)を追加)登録したプロトコルを追加し、
プロトコルを削除する((ヘッドが削除DeleteProtocol))、
ノードと動作を一致させる機能(TraverseList)各ノードのリストをトラバースし、
指定されたIDを削除するための契約(指定されたノード(DeleteNode)を除去)、
、破壊プロトコルオブジェクト(リストオブジェクトブランク(DestoryProtocolStack))(ノード(ClearProtocol)を削除する)空のリストは、リストの長さ(親リストオブジェクト(GetCurrentSize)の長さ)を返します。
サインアップHTTPプロトコル(InitHttp):. 1新しい(ターゲット)ノード(malloc関数)
2.オブジェクトセット(T_DATA ID = HTTP、フラグ= INUSE; INIT =追記機能(InitHttpNode)接続またはリスニング; SendFunction =リアライズ送信さらなる機能(HttpSendFunction))
(InitHttpNode:設定したIPアドレスまたは... HttpSendFunctionとの接続待機ポート:send_buffer使用を送信....
3.リスト内のオブジェクトに(RegisterProtocol)への良好なターゲットを作成して、設定を追加します。
HTTPとHTTPS登録TCPソース枠組み合意
1の#include <stdio.hの> 2の#include <STDLIB.H> 3 4 の#define BUFFER_SIZE 0x1000を 5 6 の#define HTTP 0x1の 7 の#define HTTPSを0x2 8 の#define TCPの0x3の 9 10 の#define INUSEの0x1の 11 の#define UNUSEの0x2の 12 13 の#define EMPTY 0x2の 14 の#define NOEMPTY 0x3の 15 16 の#define偽0 17 の#defineトゥーレ1 18 19 / * アプリケーションパラメータ* / 20 の#define DEBUG(1) 21 / * デバッグプリント* / 22 の#if DEBUG 23 の#define DBG_PRINT(FMT、引数...)を実行{のprintf( "[*] Listlink <%S>:" FMT " \ n」は\ 24 、__ func__、##引数); } 一方(偽) 25 の#else 26 の#define DBG_PRINT(...){}行う(偽)しながら 27 #endifの 28 29 30符号なしのtypedef チャー U8。 31の符号なしのtypedef 短いU16。 32符号なしのtypedefint型の U32; 33 34のtypedef 構造体_T_NodeStruct { 35 U8番号; 36 U8フラグ。 37 ; [BUFFER_SIZE] send_buffer U8 38の U32(* INIT)(無効)。 39の U32(* SendFunction)(INT FD、U8 * send_buffer、U32長) 40 } T_NodeStruct。 41 T_NodeStruct *のtypedef Pt_NodeStruct。 42 43 44のtypedef 構造体_T_ListLinkNode { 45 T_NodeStructのT_DATA。 46 構造体_T_ListLinkNode * pt_next; 47 } T_ListLinkNode; 48 T_ListLinkNode *のtypedef Pt_ListLinkNode; 49 50のtypedef 構造体_T_list { 51は Pt_ListLinkNode Pfront; 52である Pt_ListLinkNodeのprear; 53は、 U32の長さ; 54である } T_list; 55 T_list *のtypedefをpt_list、 56は 57である 58 ボイドClearProtocal(pt_list ptlist ); //クリアプロトコルはDeleteProtocol登録がすべてのリストでノードを削除するために呼び出す活用 59 のボイドDeleteNode(pt_list ptlist、IDのU8); //選択したノードIDの削除 60 ボイドDeleteProtocal(Pt_listのptlist、Pt_ListLinkNodeのptlistnode) ; // ヘッダノードを削除し、バックアップデータを削除する、2番目のパラメータはにNULLとすることができる保存しない 61は、 空隙DestoryProtocalStack(pt_list ptlist); //すべての空のリストのノードセット 62である U32 GetCurrentSize (pt_listのptlist); //は、長さの現在のリストを取得する 63 U8のisEmpty(pt_listのptlist); //空の判決を受け 、64 pt_list ListLinkInit(無効); //リストオブジェクトの作成 65 、ボイドRegisterProtocal(pt_listのptlist、Pt_ListLinkNodeのptlistnodeを); //登録作成されたオブジェクトのリストにノードを追加することで合意には、管理対象 66 のボイド TraverseList(pt_listのptlist、無効 ;(*トラバース)(Pt_ListLinkNodeのptlistlinknode、U8 *))
//マッチング機能、リンクリストのそれぞれに渡された関数をノードが動作します