WSASendは、接続先サーバにデータを送信するWindowsAPI・・・。
サーバ側はWSARecvとし、クライアント側はWSASendプロジェクトを作成・・・。
サーバ側は、
WSARecvで読み込んだ文字列が"end"だったら、ループを抜けて、アクセプトソケット、サーバソケットともに閉じて終了する・・・。
そうでない間は、読み込んだ文字列を標準出力する・・・。
クライアント側は、
fgetsで入力した文字列をszInputBufに格納・・・。
入力文字列が"fin"なら、WSASendでサーバに"end"を送って、サーバ側に終了要求を投げ、なおかつ、クライアント自分自身もループから抜けて終了する・・・。
そうでない場合は、WSASendでサーバに入力文字列szInputBufの内容を送信・・・。
WSARecv側を実行すると、
WSAStartup success! soc = 124 port = 0fa0, ns_port = a00f setsockopt(SO_REUSEADDR) success. bind Success. listen success.
この状態で、WSASend側を実行・・・。
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 = 408 port = 0fa0, ns_port = a00f WSAConnect success. >
WSARecv側は、
WSAStartup success! soc = 124 port = 0fa0, ns_port = a00f setsockopt(SO_REUSEADDR) success. bind Success. listen success. acc = 128 accept!(IPAddress = 127.0.0.1, Port = 49412)
WSASend側で、"abc"と入力すると、
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 = 408 port = 0fa0, ns_port = a00f WSAConnect success. >abc >
WSARecv側は、
WSAStartup success! soc = 124 port = 0fa0, ns_port = a00f setsockopt(SO_REUSEADDR) success. bind Success. listen success. acc = 128 accept!(IPAddress = 127.0.0.1, Port = 49412) abc
"abc"が送られてきている・・・。
"end"を入力すると、
>abc >end >
WSARecv側だけ終了する・・・。
WSASend側もセッションが切れるので、ちょっと入力しているとすでに終了してるのがわかる・・・。
"fin"の場合、WSARecv側は、
abc 続行するには何かキーを押してください . . .
WSASend側は、
WSAConnect success. >abc >fin C:\Project\Cloud\github.com\Sample\winapi\WSASend\WSASend\src\WSASend\release>
と両方終了している・・・。
Sample/WSASend.cpp at master · bg1bgst333/Sample · GitHub
Sample/WSARecv.cpp at master · bg1bgst333/Sample · GitHub