WindowsAPI

CreateProcess

CreateProcessは、プロセスを作成するWindowsAPI・・・。CreateProcess 関数MainProcessプロジェクトとSubProcessプロジェクトを作成し、MainProcess側からCreateProcessを使ってSubProcessを実行するようにしてみる・・・。MainProcess側は、"MainProcess S…

WSAPoll

WSAPollは、複数のファイルディスクリプタを監視するWindowsAPI・・・。WSAPoll function (Windows)UNIX系OSのpollに当たるが、pollという関数は無く、これを使う・・・。 WSAPOLLFDは、UNIX系OSのpollfdに当たる・・・。 また、この関数自体Vistaから登場し…

select

selectは、複数のファイルディスクリプタを監視し、なんらかの状態変化が発生した場合に、この関数を抜けることで知らせるWindowsAPI・・・。select function (Windows)UNIX系OS同様にWindowsでも、これでマルチセッションが出来る・・・。 サーバ側はselect…

send

sendは、接続先サーバにデータを送信するWindowsAPI・・・。send function (Windows)サーバ側はrecvプロジェクト、クライアント側はsendプロジェクトとし、 サーバ側は、"end"ならこの受信ループを抜け、そうでないならrecvで読み込んだbufを出力・・・。ク…

WSASend

WSASendは、接続先サーバにデータを送信するWindowsAPI・・・。WSASend function (Windows)サーバ側はWSARecvとし、クライアント側はWSASendプロジェクトを作成・・・。サーバ側は、WSARecvで読み込んだ文字列が"end"だったら、ループを抜けて、アクセプトソ…

connect

connectは、指定のアドレスのサーバに接続するWindowsAPI・・・。connect function (Windows)こちらはUNIX系OSのconnectと同様に使うタイプ・・・。クライアント側はconnectプロジェクトを作成し、サーバ側は以前作成したntohsプロジェクトのものを使う・・…

WSAConnect

WSAConnectは、指定のアドレスのサーバに接続するWindowsAPI・・・。WSAConnect function (Windows)これまではtelnetでサーバに接続していたが、それでは入力に問題があるため、WSAConnectで接続するクライアントを作る・・・。2つプロジェクトを作る・・・…

gethostbyname

gethostbynameは、ホスト名からIPアドレスなどのホスト情報を取得するWindowsAPI・・・。gethostbyname function (Windows)このようにhostent構造体ポインタhostにホスト情報が返ってくるので、IPアドレスを出力・・・。 WSAStartup success! hostname: loca…

recv

recvは、アクセプトした相手から送られてきたデータを受信するWindowsAPI・・・。recv function (Windows)WSARecvだとWSABUF構造体を用意する必要があったが、こちらは、char型配列bufだけでいい・・・。 WSAStartup success! soc = 124 port = 0fa0, ns_por…

WSARecv

WSARecvは、アクセプトした相手から送られてきたデータを受信するWindowsAPI・・・。WSARecv function (Windows)面倒なのは、WSABUF構造体を使わなければならないということ・・・。WSABUF構造体のwsaBuf, BYTE型配列btBuf, DWORDのdwRecvLen, dwFlagsなどが…

ntohs

ntohsは、ネットワークバイトオーダなポート番号などを、ホストバイトオーダの値に変換するWindowsAPI・・・。ntohs function (Windows)UNIX系OSのntohsと同様の使い方・・・。これで相手側のポートを出力してみる・・・。 WSAStartup success! soc = 124 po…

WSANtohs

WSANtohsは、ネットワークバイトオーダなポート番号などを、ホストバイトオーダの値に変換するWindowsAPI・・・。WSANtohs function (Windows)sockaddr_in構造体のsin_portに相手側が使用しているポート番号がネットワークバイトオーダで格納されているので…

inet_ntoa

inet_ntoaは、ネットワークバイトオーダのIPアドレスをIPアドレス文字列に変換するWindowsAPI・・・。inet_ntoa function (Windows)sockaddr_in構造体のsin_addrにネットワークバイトオーダのIPアドレスが格納されているので、このようにIPアドレス文字列を…

accept

acceptは、接続を受け付けるWindowsAPI・・・。accept function (Windows)UNIX系OSのacceptと同じように・・・。で実行して、 WSAStartup success! soc = 124 port = 0fa0, ns_port = a00f setsockopt(SO_REUSEADDR) success. bind Success. listen success.…

WSAAccept

WSAAcceptは、接続を受け付けるWindowsAPI・・・。WSAAccept function (Windows)UNIX系OSのacceptと比べると、第4、第5引数が違う・・・。 とりあえずはNULLにしておいても問題ない・・・。sockaddr_in構造体のsaiClientAddrと長さのiClientAddrLenを用意し…

listen

listenは、接続を待ち受けるWindowsAPI・・・。listen function (Windows)UNIX系OSのlistenと同じ使い方でリッスンできる・・・。これでリッスンしてみる・・・。 WSAStartup success! soc = 124 port = 0fa0, ns_port = a00f setsockopt(SO_REUSEADDR) succ…

setsockopt

setsockoptは、ソケットのオプションを設定するWindowsAPI・・・。setsockopt function (Windows)これでSO_REUSEADDRをセットして、繰り返しbindできるように・・・。optvalに1をセットしておいて、bind前にsetsockopt・・・。 WSAStartup success! soc = 12…

bind

bindは、作成したソケットとアドレス情報をバインドするWindowsAPI・・・。bind function (Windows)bindについては、WSA系の関数がないので、UNIX系OSのbind同様に使うことができる・・・。ただ、sockaddr_in構造体の、のところがUNIX系OSのそれとはちょっと…

htons

htonsは、ホストバイトオーダからネットワークバイトオーダに変換するWindowsAPI・・・。htons function (Windows)UNIX系OSのhtons同様に使うことができる・・・。これだったら、socはいらない・・・。 WSAStartup success! soc = 124 port = 0fa0, ns_port …

WSAHtons

WSAHtonsは、ホストバイトオーダからネットワークバイトオーダに変換するWindowsAPI・・・。WSAHtons function (Windows)第2引数にポート番号の値を指定すると、第3引数に渡した変数にポート番号のネットワークバイトオーダの値を格納してくれる・・・。この…

socket

WindowsAPI(Win32API) Advent Calendar 2015 25日目(最終日) WindowsAPI(Win32API) Advent Calendar 2015 - Adventarsocketは、ソケットを作成するWindowsAPI・・・。socket function (Windows)UNIX系OSのsocketとほぼ同じようなものも用意されている・・・…

WSASocket

WindowsAPI(Win32API) Advent Calendar 2015 24日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarWSASocketは、ソケットを作成するWindowsAPI・・・。WSASocket function (Windows)第3引数まではUNIX系OSのsocketと同じように使える・・・。 第4引…

WSAStartup

WindowsAPI(Win32API) Advent Calendar 2015 23日目 WindowsAPI(Win32API) Advent Calendar 2015 - Adventar前回までで、WinInetでHTTP通信などの簡易的なインターネットアクセスについては説明できた・・・。 より高度な、というか自由にネットワークを扱う…

HttpQueryInfo

WindowsAPI(Win32API) Advent Calendar 2015 22日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarHttpQueryInfoは、HTTPリクエストやHTTPレスポンスの中の、マクロで指定された情報を取得するWindowsAPI・・・。HttpQueryInfo function (Windows)…

HttpSendRequest

WindowsAPI(Win32API) Advent Calendar 2015 21日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarHttpSendRequestは、HTTPリクエストを送信するWindowsAPI・・・。HttpSendRequest function (Windows)HttpOpenRequestで作成したリクエストをこれで…

HttpOpenRequest

WindowsAPI(Win32API) Advent Calendar 2015 20日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarHttpOpenRequestは、HTTPリクエストを作成するWindowsAPI・・・。HttpOpenRequest function (Windows)セッションハンドル、HTTPメソッド、対象とな…

InternetConnect

WindowsAPI(Win32API) Advent Calendar 2015 19日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarInternetConnectは、指定のポート番号で指定のサーバに接続するWindowsAPI・・・。InternetConnect function (Windows)これでWebサーバにアクセスす…

InternetReadFile

WindowsAPI(Win32API) Advent Calendar 2015 18日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarInternetReadFileは、指定されたハンドルの開かれたURLリソースの内容を読み込むWindowsAPI・・・。InternetReadFile function (Windows)前回、Inte…

InternetOpenUrl

WindowsAPI(Win32API) Advent Calendar 2015 17日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarInternetOpenUrlは、指定されたURLリソース(そのURLのファイルなど)を開くWindowsAPI・・・。InternetOpenUrl function (Windows)これで、"http://b…

InternetOpen

WindowsAPI(Win32API) Advent Calendar 2015 16日目 WindowsAPI(Win32API) Advent Calendar 2015 - AdventarInternetOpenは、Win32のインターネット拡張機能であるWinInetの初期化をするWindowsAPI・・・。InternetOpen function (Windows) InternetOpenHTTP…