wip: feat: implement sending via multicast
This commit is contained in:
parent
bd438dc77c
commit
1abc3f43f2
|
|
@ -46,9 +46,11 @@ HWND win_hndl = NULL;
|
|||
UINT const WM_USR_LOG = WM_APP + 1;
|
||||
UINT const WM_USR_TOGGLE_CONNECT = WM_APP + 2;
|
||||
UINT const WM_USR_LOAD_CONFIG = WM_APP + 3;
|
||||
UINT const WM_USR_TOGGLE_MULTICAST = WM_APP + 4;
|
||||
|
||||
HANDLE comm_thread;
|
||||
wstring remote = L"localhost:30501";
|
||||
wstring remote_multicast = L"239.80.123.4:30501";
|
||||
wstring config_file_path;
|
||||
|
||||
// Mutex/cv protects following vars
|
||||
|
|
@ -122,6 +124,10 @@ void toggle_want_connect()
|
|||
PostMessage(win_hndl, WM_USR_TOGGLE_CONNECT, (WPARAM) NULL, (LPARAM) NULL);
|
||||
}
|
||||
|
||||
void toggle_multicast() {
|
||||
PostMessage(win_hndl, WM_USR_TOGGLE_MULTICAST, (WPARAM) NULL, (LPARAM) NULL);
|
||||
}
|
||||
|
||||
void save_config(path const& filepath, wstring const& remote, bool connect)
|
||||
{
|
||||
std::wofstream f{filepath, std::ios_base::trunc};
|
||||
|
|
@ -242,6 +248,12 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
|||
|
||||
break;
|
||||
}
|
||||
case IDC_MULTI_BOX:
|
||||
{
|
||||
bool const checked = IsDlgButtonChecked(hWnd, IDC_MULTI_BOX);
|
||||
toggle_multicast();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
|
@ -288,6 +300,23 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
|||
conn_cv.notify_one();
|
||||
return true;
|
||||
}
|
||||
case WM_USR_TOGGLE_MULTICAST:
|
||||
{
|
||||
lock_guard<mutex> conn_lk{ conn_mut };
|
||||
|
||||
want_connect = false;
|
||||
// TODO wait for disconnect?
|
||||
|
||||
// off -> on
|
||||
// button set text "set"
|
||||
// text set saved multicast
|
||||
//
|
||||
// on -> off
|
||||
// button set text "Connect"
|
||||
// text set saved unicast
|
||||
|
||||
return true;
|
||||
}
|
||||
case WM_USR_LOAD_CONFIG:
|
||||
{
|
||||
lock_guard<mutex> conn_lk{ conn_mut };
|
||||
|
|
@ -422,6 +451,31 @@ SOCKET _connect() {
|
|||
return sock;
|
||||
}
|
||||
|
||||
SOCKET _connect_multic()
|
||||
{
|
||||
SOCKET sock;
|
||||
|
||||
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
// TODO fd < 0
|
||||
|
||||
string remote_ch =
|
||||
wstring_convert<codecvt_utf8_utf16<wchar_t>>{}.to_bytes(remote_multicast);
|
||||
|
||||
auto pos = remote_ch.rfind(":");
|
||||
string port_str = pos == string::npos ? "30501" : remote_ch.substr(pos + 1);
|
||||
u_short port = std::stoul(port_str);
|
||||
|
||||
struct sockaddr_in addr = { 0 };
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = inet_addr(remote_ch.c_str());
|
||||
addr.sin_port = htons(port);
|
||||
|
||||
connect(sock, (struct sockaddr *) &addr, sizeof(addr));
|
||||
// TODO return
|
||||
|
||||
return sock;
|
||||
}
|
||||
|
||||
bool _send(SOCKET &sock, string const &msg) {
|
||||
int len = (int) msg.length();
|
||||
int buf_len = len + 4;
|
||||
|
|
|
|||
|
|
@ -1257,6 +1257,7 @@
|
|||
#define IDC_BTN_SUBMIT2 1002
|
||||
#define IDC_EDIT2 1003
|
||||
#define IDC_LOG 1003
|
||||
#define IDC_MULTI_BOX 1004
|
||||
#define CF_GDIOBJLAST 0x03FF
|
||||
#define _WIN32_WINNT_NT4 0x0400
|
||||
#define _WIN32_IE_IE40 0x0400
|
||||
|
|
@ -1618,7 +1619,7 @@
|
|||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 105
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1004
|
||||
#define _APS_NEXT_CONTROL_VALUE 1005
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -48,14 +48,15 @@ END
|
|||
// Dialog
|
||||
//
|
||||
|
||||
IDD_DIALOG1 DIALOGEX 0, 0, 309, 177
|
||||
IDD_DIALOG1 DIALOGEX 0, 0, 309, 187
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||
CAPTION "TCP Sender"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
EDITTEXT IDC_REMOTE,7,7,228,14,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_REMOTE,7,13,228,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "Connect",IDC_BTN_SUBMIT,252,7,50,14,BS_CENTER
|
||||
EDITTEXT IDC_LOG,7,31,295,139,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY
|
||||
AUTOCHECKBOX "Multicast",IDC_MULTI_BOX,255,24,228,14
|
||||
EDITTEXT IDC_LOG,7,41,295,139,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY
|
||||
END
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue