|
cmn-clib(CommonLibraryForC)
C言語共通ライブラリ
|
ネットワークライブラリ ヘッダファイル [詳解]
#include "cmnclib/Common.h"#include "cmnclib/CmnData.h"#include "cmnclib/CmnThread.h"#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>データ構造 | |
| struct | tag_CmnNetSocket |
| struct | tag_CmnNetSocketServer |
| struct | tag_CmnNetHttpResponse |
マクロ定義 | |
| #define | CNS_OPT_GRACEFUL_CLOSE 0x01 |
型定義 | |
| typedef struct tag_CmnNetSocket | CmnNetSocket |
| typedef struct tag_CmnNetSocketServer | CmnNetSocketServer |
| typedef struct tag_CmnNetHttpResponse | CmnNetHttpResponse |
関数 | |
| D_EXTERN CmnNetSocketStatus | CmnNetSocket_StartServer (unsigned short port, void(*serverMainProc)(CmnNetSocket *), CmnNetSocketServer *server) |
| TCP/IP待ち受けサーバー起動 [詳解] | |
| D_EXTERN CmnNetSocketStatus | CmnNetSocket_EndServer (CmnNetSocketServer *server) |
| サーバーを終了する [詳解] | |
| D_EXTERN CmnNetSocketStatus | CmnNetSocket_NoSessionRequest (const char *host, unsigned short port, CmnDataBuffer *request, CmnDataBuffer *response, const char *responseEndMark, const int responseEndMarkLen, int opt) |
| セッションレスTCP/IPリクエスト送信 [詳解] | |
| D_EXTERN CmnNetSocketStatus | CmnNetSocket_ReceiveAll (CmnNetSocket *socket, CmnDataBuffer *buf, const char *endMark, const int endMarkLen) |
| ソケットからすべてのデータを読み込む [詳解] | |
| D_EXTERN CmnNetSocketStatus | CmnNetSocket_SendAll (CmnNetSocket *socket, const void *data, int len) |
| ソケットへすべてのデータを書き込む [詳解] | |
| D_EXTERN CmnNetSocketStatus | CmnNetSocket_ToSocketAddress (const char *host, unsigned short port, struct sockaddr_in *addr) |
| IPアドレスやホスト名文字列とポート番号からsockaddr_inを設定する [詳解] | |
| D_EXTERN CmnNetHttpResponse * | CmnNetHttp_GetRequest (const char *ip, unsigned short port, const char *path) |
| HTTPのGETリクエストを送信する [詳解] | |
| D_EXTERN CmnNetHttpResponse * | CmnNetHttp_PostRequest (const char *ip, unsigned short port, const char *path, CmnDataBuffer *requestBody) |
| HTTPのPOSTリクエストを送信する [詳解] | |
ネットワークライブラリ ヘッダファイル
ネットワークライブラリのヘッダファイル。
| #define CNS_OPT_GRACEFUL_CLOSE 0x01 |
ソケットオプション:リクエスト送信後にFIN送信(送信側クローズ)を行う
| typedef struct tag_CmnNetSocket CmnNetSocket |
ソケットオブジェクト(ネイティブソケットのラッパー)
| typedef struct tag_CmnNetSocketServer CmnNetSocketServer |
ソケット待ち受けサーバーオブジェクト
| enum CmnNetSocketStatus |
ソケットステータス
| D_EXTERN CmnNetHttpResponse* CmnNetHttp_GetRequest | ( | const char * | ip, |
| unsigned short | port, | ||
| const char * | path | ||
| ) |
HTTPのGETリクエストを送信する
| ip | リモートホストのIPアドレス |
| port | リモートホストのポート |
| path | リクエストパス |
| D_EXTERN CmnNetHttpResponse* CmnNetHttp_PostRequest | ( | const char * | ip, |
| unsigned short | port, | ||
| const char * | path, | ||
| CmnDataBuffer * | requestBody | ||
| ) |
HTTPのPOSTリクエストを送信する
| ip | リモートホストのIPアドレス |
| port | リモートホストのポート |
| path | リクエストパス |
| requestBody | リクエストボディに設定するデータ |
| D_EXTERN CmnNetSocketStatus CmnNetSocket_EndServer | ( | CmnNetSocketServer * | server | ) |
サーバーを終了する
| server | サーバーオブジェクト |
| D_EXTERN CmnNetSocketStatus CmnNetSocket_NoSessionRequest | ( | const char * | host, |
| unsigned short | port, | ||
| CmnDataBuffer * | request, | ||
| CmnDataBuffer * | response, | ||
| const char * | responseEndMark, | ||
| const int | responseEndMarkLen, | ||
| int | opt | ||
| ) |
セッションレスTCP/IPリクエスト送信
セッションがなく、1回のRequest→Responseで完結するTCP/IPリクエストを送信する。
| ip | リモートホストのアドレス(IPアドレスまたはホスト名) |
| port | リモートホストのポート |
| request | リクエストデータ |
| response | レスポンスデータを格納するバッファ |
| responseEndMark | 受信データの終わりを示すバイト列。相手の送信終了(graceful close)まで無制限に読み込み続ける場合はNULLを指定する。 |
| responseEndMarkLen | endMarkのバイト数 |
| opt | ソケットオプション(CNS_OPT_XXX を論理和で指定する) |
| D_EXTERN CmnNetSocketStatus CmnNetSocket_ReceiveAll | ( | CmnNetSocket * | socket, |
| CmnDataBuffer * | buf, | ||
| const char * | endMark, | ||
| const int | endMarkLen | ||
| ) |
ソケットからすべてのデータを読み込む
受信データにendMarkが現れる、もしくは相手が送信終了(FIN送信、graceful close)するまでブロックして受信データを全て読み込む。
| socket | Socket |
| buf | 受信したデータを格納するバッファ。endMarkも含めて全ての受信データを格納する。 |
| endMark | 受信データの終わりを示すバイト列。相手の送信終了(graceful close)まで無制限に読み込み続ける場合はNULLを指定する。 |
| endMarkLen | endMarkのバイト数 |
| D_EXTERN CmnNetSocketStatus CmnNetSocket_SendAll | ( | CmnNetSocket * | socket, |
| const void * | data, | ||
| int | len | ||
| ) |
ソケットへすべてのデータを書き込む
| socket | Socket |
| data | 送信するデータ |
| len | dataのバイト数 |
| D_EXTERN CmnNetSocketStatus CmnNetSocket_StartServer | ( | unsigned short | port, |
| void(*)(CmnNetSocket *) | serverMainProc, | ||
| CmnNetSocketServer * | server | ||
| ) |
TCP/IP待ち受けサーバー起動
portにLISTENするサーバー処理を別スレッドで開始する。
待ち受け開始後、portにアクセスがあればmethodを新規スレッドでコールする。 待ち受けを終了する場合はCmnNetSocket_EndServerをコールすること。 待ち受けスレッドはserver->acceptThreadに格納される。
| port | 通信を待ち受けるポート |
| serverMainProc | portにアクセスがあった場合に呼び出す処理 |
| server | サーバー起動に成功した場合にサーバー情報を設定する。呼び出し側での初期化は不要。 |
| D_EXTERN CmnNetSocketStatus CmnNetSocket_ToSocketAddress | ( | const char * | host, |
| unsigned short | port, | ||
| struct sockaddr_in * | addr | ||
| ) |
IPアドレスやホスト名文字列とポート番号からsockaddr_inを設定する
| host | IPアドレスまたはホスト名の文字列 |
| port | ポート番号 |
| addr | 変換したIPアドレス情報を格納する |