Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
UdpConnectorTest.cpp
[詳解]
1
5
6#include "pch.h"
7#include "SocketBuilder.h"
8#include "UdpConnector.h"
9#include "Thread.h"
10#include "TString.h"
11#include "Binder.hpp"
12
13using namespace Microsoft::VisualStudio::CppUnitTestFramework;
14
15namespace WindowsLibraryTest
16{
17 TEST_CLASS (UdpConnectorTest)
18 {
19 public:
20 TEST_CLASS_INITIALIZE (ClassInitialize)
21 {
22 Logger::WriteMessage ("UdpConnectorTest class initialize.\n");
23 }
24
25 TEST_CLASS_CLEANUP (ClassCleanup)
26 {
27 Logger::WriteMessage ("UdpConnectorTest class cleanup.\n");
28 }
29
30 TEST_METHOD_INITIALIZE (MethodInitialize)
31 {
32 Logger::WriteMessage ("UdpConnectorTest method initialize.\n");
33 }
34
35 TEST_METHOD_CLEANUP (MethodCleanup)
36 {
37 Logger::WriteMessage ("UdpConnectorTest method cleanup.\n");
38 }
39
40 class WorkerThread : public alt::Thread, public alt::skeleton::ICallback
41 {
42 public:
43 WorkerThread (alt::UdpConnector* connector, int id)
44 {
45 _connector = connector;
46 _id = id;
47 _callback = this;
48 };
49
50 ~WorkerThread ()
51 {
52 delete _connector;
53 };
54
55 BOOL SetTarget (LPCTSTR lpctszTargetIP, WORD wTargetPort)
56 {
57 return _connector->SetSockAddr (lpctszTargetIP, wTargetPort);
58 };
59
60 DWORD Invoke (LPVOID lpvParam)
61 {
62 alt::TString message;
63
64 for (int i = 0; i < 10; i++)
65 {
66 if (_id == 1)
67 {
68 message.Format (_T ("WorkerThread(%d) %d\n"), _id, i);
69 INT iSend = _connector->Send ((LPVOID)message.Ctr (), message.Byte ());
70 Assert::AreEqual<int> (iSend, message.Byte (), _T ("send size different.\n"));
71
72 alt::TString buffer (80);
73 INT iRecv = _connector->Recv (buffer.Ptr(), 80);
74 Logger::WriteMessage (buffer.Ctr ());
75 }
76 else
77 {
78 BYTE byBuffer[80]{ 0 };
79 ZeroMemory (byBuffer, sizeof(byBuffer));
80 INT iRecv =_connector->Recv (byBuffer, sizeof(byBuffer));
81 byBuffer[iRecv] = '\0';
82 Logger::WriteMessage ((LPCTSTR)byBuffer);
83
84 alt::TString message (_T ("NEXT\n"));
85 _connector->Send ((LPVOID)message.Ctr (), message.Byte ());
86 }
87 }
88
89 return 0;
90 }
91
92 private:
93 WorkerThread () = delete;
94
95 int _id;
96 alt::UdpConnector* _connector;
97 };
98
99 TEST_METHOD (UdpConnecorTest1)
100 {
101 alt::SocketBuilder builder;
104 Assert::AreEqual(0, builder.Startup (), _T("SocketBuilder::Startup() failed.\n"));
105
106 connector1.New (builder.CreateUdpConnector (_T ("127.0.0.1"), 9001), 1);
107 Assert::IsTrue(connector1->SetTarget (_T ("127.0.0.1"), 9002), _T("Connector::SetTarget(1) failed.\n"));
108
109 connector2.New (builder.CreateUdpConnector (_T ("127.0.0.1"), 9002), 2);
110 Assert::IsTrue(connector2->SetTarget (_T ("127.0.0.1"), 9001), _T("Connector::SetTarget(2) failed.\n"));
111
112 connector1->Create ();
113 connector2->Create ();
114
115 connector1->Wait ();
116 connector2->Wait ();
117 }
118 };
119}
newオブジェクトを管理するコンテナクラス
ソケットに関するWindowsAPIを集約したクラス
文字列に関するWindowsAPIを集約したクラス
スレッドに関するWindowsAPIを集約したクラス
UDP通信に関するWindowsAPIを集約したクラス
プリコンパイル済みヘッダー ファイルです。
ソケットに関するWindowsAPIを集約したクラス
Definition: SocketBuilder.h:18
int APIENTRY Startup()
Windowsソケットの使用準備
UdpConnector *APIENTRY CreateUdpConnector(LPCTSTR lpctszIpAddr, u_short portNo)
UdpConnectorの作成
文字列に関するWindowsAPIを集約したクラス
Definition: TString.h:17
TString &APIENTRY Format(LPCTSTR format,...)
フォーマットに従ってパラメータを文字列化します。
Definition: TString.cpp:333
INT APIENTRY Byte() const
内部で確保している文字列(バイト数)を取得します。
Definition: TString.cpp:44
LPCTSTR APIENTRY Ctr() const
内部で確保している文字列ポインタを取得します。
Definition: TString.h:46
LPTSTR APIENTRY Ptr() const
内部で確保している文字列ポインタを取得します。
Definition: TString.h:42
スレッドに関するWindowsAPIを集約したクラス
Definition: Thread.h:43
UDP通信に関するWindowsAPIを集約したクラス
Definition: UdpConnector.h:16
BOOL APIENTRY SetSockAddr(LPCTSTR lpctszAddress, u_short portNo)
UDP送信先アドレスの設定
newオブジェクトを管理するコンテナクラス
Definition: Binder.hpp:18
bool APIENTRY New(Args... args)
管理オブジェクトの作成
Definition: Binder.hpp:44
Threadクラスのスレッド実行関数を設定します。
TEST_CLASS(ArrayTest)
Definition: ArrayTest.cpp:19