add udp implement

This commit is contained in:
zcy 2022-02-06 23:29:47 +08:00
parent fa11185174
commit 02a2780678
7 changed files with 55 additions and 9 deletions

View File

@ -174,6 +174,7 @@
<ClCompile Include="tcp_client_form.cpp" />
<ClCompile Include="tcp_server_libevent.cpp" />
<ClCompile Include="uart_form.cpp" />
<ClCompile Include="udp_client_libevent.cpp" />
<ClCompile Include="utils.cpp" />
<ClCompile Include="lua_bind.cpp" />
</ItemGroup>
@ -190,6 +191,7 @@
<ClInclude Include="tcp_server_form.h" />
<ClInclude Include="tcp_client_form.h" />
<ClInclude Include="uart_process.h" />
<ClInclude Include="udp_client_libevent.h" />
<ClInclude Include="utils.h" />
</ItemGroup>
<ItemGroup>

View File

@ -57,6 +57,9 @@
<ClCompile Include="global.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="udp_client_libevent.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="main.h">
@ -98,6 +101,9 @@
<ClInclude Include="global.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="udp_client_libevent.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Xml Include="..\Debug\resources\themes\default\basic\basic.xml">

View File

@ -1 +1 @@
require("string") function OnNewClient(ip,port) showdata("on new client from lua " .. ip..port.."32232323\r\n") end function OnClientRecvData(data) showdata("client recieve data from lua "..data.."\r\n") end function OnClientDisconnect(ip,port) showdata("client leave from lua " .. ip..port) end
require("string") function OnNewClient(ip,port) showdata("on new client from lua " .. ip..port.."32232323\r\n") end function OnClientRecvData(data) showdata("client recieve data from lua "..data.."+++12312312\r\n") end function OnClientDisconnect(ip,port) showdata("client leave from lua " .. ip..port) end

View File

@ -47,24 +47,20 @@ void TcpClientForm::ShowDataInEdit(const char*p) {
void TcpClientForm::Init()
{
ui::ChildBox::Init();
m_label_1 = dynamic_cast<ui::Label*>(FindSubControl(L"uart_info_label"));
m_rich_edit_1 = dynamic_cast<ui::RichEdit*>(FindSubControl(L"uart_recv_eidt"));
m_rich_edit_2 = dynamic_cast<ui::RichEdit*>(FindSubControl(L"lua_script"));
m_uart_send_edit = dynamic_cast<ui::RichEdit*>(FindSubControl(L"uart_send_edit"));
m_btn_send_data = dynamic_cast<ui::Button*>(FindSubControl(L"btn_send_data"));
m_check_box_1 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_new_line"));
m_check_box_2 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_time_send"));
m_check_box_3 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_hex_send"));
m_check_box_4 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_hex_recv"));
m_btn_save_lua = dynamic_cast<ui::Button*>(FindSubControl(L"btn_save_lua"));
m_rich_edit_2->SetRich(true);
m_rich_edit_2->SetReturnMsgWantCtrl(true);
m_rich_edit_2->SetText(string2wstring(mLuaScript));
wchar_t p[100] = { 0 };
wsprintf(p, L"地址%s,端口号%d 未连接", string2wstring(m_url).c_str(),m_port);
m_label_1->SetText(std::wstring(p));
@ -73,13 +69,12 @@ void TcpClientForm::Init()
if (ev->Type == ui::EventType::kEventClick) {
std::wcout << m_uart_send_edit->GetText() << std::endl;
auto data = wstring2string(m_uart_send_edit->GetText());
if (m_check_box_1->IsSelected()) {
data += std::string("\r\n");
}
data += std::string("\r\n");
this->ClientEvent()->SendDataAsync(data.c_str(), data.size());
}
return true;
});
if (nullptr != m_btn_save_lua) {
m_btn_save_lua->AttachClick([this](ui::EventArgs*) {
std::cout << "保存lua脚本\r\n";

View File

@ -93,7 +93,6 @@ private:
OnAccept m_handle_accept;
OnDisconnect m_handle_disconnect;
intptr_t mSocketFD; // 操作系统原生socket
};
#endif

View File

@ -0,0 +1,8 @@
#include "udp_client_libevent.h"
UdpClientLibevent::UdpClientLibevent(std::string ipaddr, uint32_t port)
{
this->m_bind_ip = ipaddr;
this->m_port = m_port;
}

View File

@ -0,0 +1,36 @@
#pragma once
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#include <WinSock2.h>
#endif
#ifdef linux
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define EVENT__HAVE_PTHREADS
#endif
#include <stdint.h>
#include <iostream>
#include <mutex>
#include <thread>
#include <map>
#include <functional>
using namespace std;
class UdpClientLibevent
{
UdpClientLibevent(std::string ipaddr,uint32_t port);
private:
uint32_t m_port; // 监听端口号
string m_bind_ip; // 绑定端口号
int m_current_conection; // 当前连接数目
uint16_t m_backlog;
struct sockaddr_in m_server_addr; // 服务器地址
struct event_base* m_event_base;
};