WSAConnect

WSAConnectは、指定のアドレスのサーバに接続するWindowsAPI・・・。

WSAConnect function (Windows)

これまではtelnetでサーバに接続していたが、それでは入力に問題があるため、WSAConnectで接続するクライアントを作る・・・。

f:id:BG1:20160107103746p:plain

2つプロジェクトを作る・・・。
WSAConnectはクライアント側、WSANtohsはサーバ側である・・・。
(WSANtohsソリューションからWSANtohsプロジェクトを持ってきただけ・・・。)
そして、WSANtohsをスタートアッププロジェクトに設定しておく・・・。

WSANtohsプロジェクトのWSANtohs.cppは、

WSAAcceptしたら、接続してきたクライアントのIPアドレス、ポート番号を出力するだけ・・・。

WSAConnectプロジェクトのWSAConnect.cppは、

ホスト名、ポート番号の入力・・・。

ホスト情報(IPアドレス)の取得・・・。

ソケットを作成し、saiTargetAddrにIPアドレス、ポート番号をセット・・・。

WSAConnectでsaiTargetAddrにセットしたサーバに接続する・・・。

ソリューションをビルドして実行すると、スタートアッププロジェクトのWSANtohs(サーバ側)のほうが実行される・・・。

WSAStartup success!
soc = 124
port = 0fa0, ns_port = a00f
setsockopt(SO_REUSEADDR) success.
bind Success.
listen success.

この状態で、コマンドプロンプトからWSAConnect.exeを実行する・・・。

C:\>cd C:\Project\Cloud\github.com\Sample\winapi\WSAConnect\WSAConnect\src\WSACo
nnect\release

C:\Project\Cloud\github.com\Sample\winapi\WSAConnect\WSAConnect\src\WSAConnect\r
elease>WSAConnect.exe
WSAStartup success!
hostname: localhost
port: 4000
host->h_addr_list[0][0] = 7f, host->h_addr_list[0][1] = 00, host->h_addr_list[0]
[3] = 00, host->h_addr_list[0][3] = 01
soc = 360
port = 0fa0, ns_port = a00f
WSAConnect success.

hostnameに"localhost"、portに4000を入力すると、接続に成功する・・・。

サーバ側には、

WSAStartup success!
soc = 124
port = 0fa0, ns_port = a00f
setsockopt(SO_REUSEADDR) success.
bind Success.
listen success.
acc = 120
accept!(IPAddress = 127.0.0.1, Port = 53187)
続行するには何かキーを押してください . . .

接続してきたクライアントに関する情報が出力される・・・。

Sample/WSAConnect.cpp at master · bg1bgst333/Sample · GitHub
Sample/WSANtohs.cpp at master · bg1bgst333/Sample · GitHub