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アドレス情報を格納する |