mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2024-11-22 05:45:38 +00:00
Replace network code with new tcp implementation
This commit is contained in:
parent
8071efbf79
commit
daef27be37
|
@ -78,7 +78,7 @@ const char *CJTAG::s_state[] =
|
||||||
|
|
||||||
static void SaveBitRegister(CBlockFile *SaveState, const Util::BitRegister ®)
|
static void SaveBitRegister(CBlockFile *SaveState, const Util::BitRegister ®)
|
||||||
{
|
{
|
||||||
uint16_t size = reg.Size() + 1; // include null terminator
|
uint16_t size = (uint16_t)reg.Size() + 1; // include null terminator
|
||||||
SaveState->Write(&size, sizeof(size));
|
SaveState->Write(&size, sizeof(size));
|
||||||
SaveState->Write(reg.ToBinaryString());
|
SaveState->Write(reg.ToBinaryString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -2471,9 +2471,6 @@ void CModel3::DumpTimings(void)
|
||||||
timings.syncTicks, (timings.syncTicks > 1 ? '!' : ','),
|
timings.syncTicks, (timings.syncTicks > 1 ? '!' : ','),
|
||||||
timings.sndTicks, (timings.sndTicks > 10 ? '!' : ','),
|
timings.sndTicks, (timings.sndTicks > 10 ? '!' : ','),
|
||||||
timings.drvTicks, (timings.drvTicks > 10 ? '!' : ','),
|
timings.drvTicks, (timings.drvTicks > 10 ? '!' : ','),
|
||||||
#ifdef NET_BOARD
|
|
||||||
timings.netTicks, (timings.netTicks > 10 ? '!' : ','), // TODO fix this line 'printf' : too many arguments passed for format string
|
|
||||||
#endif
|
|
||||||
timings.frameTicks, (timings.frameTicks > 16 ? '!' : ' '));
|
timings.frameTicks, (timings.frameTicks > 16 ? '!' : ' '));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3125,7 +3122,6 @@ bool CModel3::Init(void)
|
||||||
#ifdef NET_BOARD
|
#ifdef NET_BOARD
|
||||||
netRAM = &memoryPool[OFFSET_NETRAM];
|
netRAM = &memoryPool[OFFSET_NETRAM];
|
||||||
netBuffer = &memoryPool[OFFSET_NETBUFFER];
|
netBuffer = &memoryPool[OFFSET_NETBUFFER];
|
||||||
m_runNetBoard = m_game.stepping != "1.0" && (NetBoard.IsAttached() && (m_config["EmulateNet"].ValueAs<bool>()));
|
|
||||||
#endif
|
#endif
|
||||||
SetCROMBank(0xFF);
|
SetCROMBank(0xFF);
|
||||||
|
|
||||||
|
@ -3143,8 +3139,11 @@ bool CModel3::Init(void)
|
||||||
if (OKAY != SoundBoard.Init(soundROM,sampleROM))
|
if (OKAY != SoundBoard.Init(soundROM,sampleROM))
|
||||||
return FAIL;
|
return FAIL;
|
||||||
#ifdef NET_BOARD
|
#ifdef NET_BOARD
|
||||||
if (OKAY != NetBoard.Init(netRAM, netBuffer))
|
if (OKAY != NetBoard.Init(netRAM, netBuffer)) {
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_runNetBoard = m_game.stepping != "1.0" && (NetBoard.IsAttached() && (m_config["EmulateNet"].ValueAs<bool>()));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PCIBridge.AttachPCIBus(&PCIBus);
|
PCIBridge.AttachPCIBus(&PCIBus);
|
||||||
|
|
|
@ -76,9 +76,8 @@
|
||||||
#include "NetBoard.h"
|
#include "NetBoard.h"
|
||||||
#include "Util/Format.h"
|
#include "Util/Format.h"
|
||||||
#include "Util/ByteSwap.h"
|
#include "Util/ByteSwap.h"
|
||||||
#include <thread>
|
#include "TCPSend.h"
|
||||||
#include "UDPSend.h"
|
#include "TCPReceive.h"
|
||||||
#include "UDPReceive.h"
|
|
||||||
|
|
||||||
// few macros to make debugging a bit less painful
|
// few macros to make debugging a bit less painful
|
||||||
// if NET_DEBUG is defined, printf works normally, otherwise it's compiled to nothing (ie removed)
|
// if NET_DEBUG is defined, printf works normally, otherwise it's compiled to nothing (ie removed)
|
||||||
|
@ -98,8 +97,6 @@
|
||||||
#define SAFE_ARRAY_DELETE(x) delete[] x; x = NULL;
|
#define SAFE_ARRAY_DELETE(x) delete[] x; x = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace SMUDP;
|
|
||||||
|
|
||||||
static int(*Runnet68kCB)(int cycles);
|
static int(*Runnet68kCB)(int cycles);
|
||||||
static void(*Intnet68kCB)(int irq);
|
static void(*Intnet68kCB)(int irq);
|
||||||
|
|
||||||
|
@ -602,15 +599,10 @@ void CNetBoard::Write8(UINT32 a, UINT8 d)
|
||||||
//printf("-> nb recu : %x\n", recv_data.size());
|
//printf("-> nb recu : %x\n", recv_data.size());
|
||||||
//memcpy(CommRAM + recv_offset, recv_data.data(), recv_data.size());
|
//memcpy(CommRAM + recv_offset, recv_data.data(), recv_data.size());
|
||||||
//DPRINTF("receive enable off=%x size=%x\n", recv_offset, recv_size);
|
//DPRINTF("receive enable off=%x size=%x\n", recv_offset, recv_size);
|
||||||
UINT16 s = 0;
|
|
||||||
std::vector <uint8_t> recv_data;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
recv_data = udpReceive.ReadData(500);
|
|
||||||
DPRINTF("-> nb recu : %x\n", recv_data.size());
|
|
||||||
s = recv_data.size();
|
|
||||||
DPRINTF("receive enable off=%x size=%x\n", recv_offset, recv_size);
|
DPRINTF("receive enable off=%x size=%x\n", recv_offset, recv_size);
|
||||||
} while (s == 0);
|
auto &recv_data = netr->Receive();
|
||||||
memcpy(CommRAM + recv_offset, recv_data.data(), recv_data.size());
|
memcpy(CommRAM + recv_offset, recv_data.data(), recv_data.size());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -629,7 +621,8 @@ void CNetBoard::Write8(UINT32 a, UINT8 d)
|
||||||
|
|
||||||
//printf("receive enable off=%x size=%x slot=%x\n", recv_offset, recv_size, slot);
|
//printf("receive enable off=%x size=%x slot=%x\n", recv_offset, recv_size, slot);
|
||||||
|
|
||||||
auto recv_data = udpReceive.ReadData(5000);
|
//auto recv_data = udpReceive.ReadData(5000);
|
||||||
|
auto &recv_data = netr->Receive();
|
||||||
DPRINTF("-> nb recu : %x\n", recv_data.size());
|
DPRINTF("-> nb recu : %x\n", recv_data.size());
|
||||||
memcpy(CommRAM + recv_offset, recv_data.data(), recv_data.size());
|
memcpy(CommRAM + recv_offset, recv_data.data(), recv_data.size());
|
||||||
}
|
}
|
||||||
|
@ -708,7 +701,8 @@ void CNetBoard::Write8(UINT32 a, UINT8 d)
|
||||||
//if (send_offset > 0x1000)
|
//if (send_offset > 0x1000)
|
||||||
if (send_size < 0x0011) // must find a better condition
|
if (send_size < 0x0011) // must find a better condition
|
||||||
{
|
{
|
||||||
udpSend.SendAsync(addr_out.data(), port_out, send_size, (const char*)CommRAM + send_offset, 1000);
|
//udpSend.SendAsync(addr_out.data(), port_out, send_size, (const char*)CommRAM + send_offset, 1000);
|
||||||
|
nets->Send((const char*)CommRAM + send_offset, send_size);
|
||||||
|
|
||||||
DPRINTF("send enable off=%x size=%x\n", send_offset, send_size);
|
DPRINTF("send enable off=%x size=%x\n", send_offset, send_size);
|
||||||
}
|
}
|
||||||
|
@ -738,7 +732,8 @@ void CNetBoard::Write8(UINT32 a, UINT8 d)
|
||||||
}
|
}
|
||||||
send_offset = (send_offset << 8) | (send_offset >> 8);
|
send_offset = (send_offset << 8) | (send_offset >> 8);
|
||||||
|
|
||||||
udpSend.SendAsync(addr_out.data(), port_out, send_size, (const char*)CommRAM + send_offset, 1000);
|
//udpSend.SendAsync(addr_out.data(), port_out, send_size, (const char*)CommRAM + send_offset, 1000);
|
||||||
|
nets->Send((const char*)CommRAM + send_offset, send_size);
|
||||||
|
|
||||||
DPRINTF("send enable off=%x size=%x slot=%x\n", send_offset, send_size, slot);
|
DPRINTF("send enable off=%x size=%x slot=%x\n", send_offset, send_size, slot);
|
||||||
}
|
}
|
||||||
|
@ -1230,7 +1225,7 @@ bool CNetBoard::Init(UINT8 * netRAMPtr, UINT8 *netBufferPtr)
|
||||||
|
|
||||||
ctrlrw = ct;
|
ctrlrw = ct;
|
||||||
|
|
||||||
printf("Init netboard netbuffer=%x netram=%x CommRAM=%x ioreg=%x ctrlrw=%x bank=%x\n", netBuffer, netRAM, CommRAM, ioreg, ctrlrw,bank);
|
printf("Init netboard\n");
|
||||||
|
|
||||||
|
|
||||||
// Initialize 68K core
|
// Initialize 68K core
|
||||||
|
@ -1247,7 +1242,15 @@ bool CNetBoard::Init(UINT8 * netRAMPtr, UINT8 *netBufferPtr)
|
||||||
port_in = m_config["port_in"].ValueAs<unsigned>();
|
port_in = m_config["port_in"].ValueAs<unsigned>();
|
||||||
port_out = m_config["port_out"].ValueAs<unsigned>();
|
port_out = m_config["port_out"].ValueAs<unsigned>();
|
||||||
addr_out = m_config["addr_out"].ValueAs<std::string>();
|
addr_out = m_config["addr_out"].ValueAs<std::string>();
|
||||||
udpReceive.Bind(port_in);
|
|
||||||
|
nets = std::make_unique<TCPSend>(addr_out, port_out);
|
||||||
|
netr = std::make_unique<TCPReceive>(port_in);
|
||||||
|
|
||||||
|
while (!nets->Connect()) {
|
||||||
|
printf("Connecting to %s:%i ..\n", addr_out.c_str(), port_out);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Successfully connected.\n");
|
||||||
|
|
||||||
return OKAY;
|
return OKAY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
#include "OSD/Thread.h"
|
#include "OSD/Thread.h"
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#include <thread>
|
#include <memory>
|
||||||
#include "UDPSend.h"
|
#include "TCPSend.h"
|
||||||
#include "UDPReceive.h"
|
#include "TCPReceive.h"
|
||||||
|
|
||||||
//#define NET_BUF_SIZE 32800 // 16384 not enough
|
//#define NET_BUF_SIZE 32800 // 16384 not enough
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ private:
|
||||||
UINT16 port_out = 0;
|
UINT16 port_out = 0;
|
||||||
std::string addr_out = "";
|
std::string addr_out = "";
|
||||||
|
|
||||||
SMUDP::UDPSend udpSend;
|
std::unique_ptr<TCPSend> nets;
|
||||||
SMUDP::UDPReceive udpReceive;
|
std::unique_ptr<TCPReceive> netr;
|
||||||
|
|
||||||
//game info
|
//game info
|
||||||
Game Gameinfo;
|
Game Gameinfo;
|
||||||
|
|
|
@ -3,6 +3,13 @@
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
|
#if defined(_DEBUG)
|
||||||
|
#include <stdio.h>
|
||||||
|
#define DPRINTF printf
|
||||||
|
#else
|
||||||
|
#define DPRINTF(a, ...)
|
||||||
|
#endif
|
||||||
|
|
||||||
TCPReceive::TCPReceive(int port) :
|
TCPReceive::TCPReceive(int port) :
|
||||||
m_listenSocket(nullptr),
|
m_listenSocket(nullptr),
|
||||||
m_receiveSocket(nullptr)
|
m_receiveSocket(nullptr)
|
||||||
|
@ -45,7 +52,7 @@ TCPReceive::~TCPReceive()
|
||||||
std::vector<char>& TCPReceive::Receive()
|
std::vector<char>& TCPReceive::Receive()
|
||||||
{
|
{
|
||||||
if (!m_receiveSocket) {
|
if (!m_receiveSocket) {
|
||||||
printf("return here because no socket\n");
|
DPRINTF("Can't receive because no socket.\n");
|
||||||
m_recBuffer.clear();
|
m_recBuffer.clear();
|
||||||
return m_recBuffer;
|
return m_recBuffer;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +61,7 @@ std::vector<char>& TCPReceive::Receive()
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
result = SDLNet_TCP_Recv(m_receiveSocket, &size, sizeof(int));
|
result = SDLNet_TCP_Recv(m_receiveSocket, &size, sizeof(int));
|
||||||
printf("received %i\n", result);
|
DPRINTF("Received %i bytes\n", result);
|
||||||
if (result <= 0) {
|
if (result <= 0) {
|
||||||
SDLNet_TCP_Close(m_receiveSocket);
|
SDLNet_TCP_Close(m_receiveSocket);
|
||||||
m_receiveSocket = nullptr;
|
m_receiveSocket = nullptr;
|
||||||
|
@ -66,7 +73,7 @@ std::vector<char>& TCPReceive::Receive()
|
||||||
while (size) {
|
while (size) {
|
||||||
|
|
||||||
result = SDLNet_TCP_Recv(m_receiveSocket, m_recBuffer.data() + (m_recBuffer.size() - size), size);
|
result = SDLNet_TCP_Recv(m_receiveSocket, m_recBuffer.data() + (m_recBuffer.size() - size), size);
|
||||||
printf("received %i\n", result);
|
DPRINTF("Received %i bytes\n", result);
|
||||||
if (result <= 0) {
|
if (result <= 0) {
|
||||||
SDLNet_TCP_Close(m_receiveSocket);
|
SDLNet_TCP_Close(m_receiveSocket);
|
||||||
m_receiveSocket = nullptr;
|
m_receiveSocket = nullptr;
|
||||||
|
@ -90,7 +97,7 @@ void TCPReceive::ListenFunc()
|
||||||
|
|
||||||
if (socket) {
|
if (socket) {
|
||||||
m_receiveSocket = socket;
|
m_receiveSocket = socket;
|
||||||
printf("accepted a connectio\n");
|
DPRINTF("Accepted connection.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
#include "TCPSend.h"
|
#include "TCPSend.h"
|
||||||
|
|
||||||
|
#if defined(_DEBUG)
|
||||||
|
#include <stdio.h>
|
||||||
|
#define DPRINTF printf
|
||||||
|
#else
|
||||||
|
#define DPRINTF(a, ...)
|
||||||
|
#endif
|
||||||
|
|
||||||
static const int RETRY_COUNT = 10; // shrugs
|
static const int RETRY_COUNT = 10; // shrugs
|
||||||
|
|
||||||
TCPSend::TCPSend(std::string& ip, int port) :
|
TCPSend::TCPSend(std::string& ip, int port) :
|
||||||
m_ip(ip),
|
m_ip(ip),
|
||||||
m_port(port),
|
m_port(port),
|
||||||
m_tryCount(0),
|
|
||||||
m_socket(nullptr)
|
m_socket(nullptr)
|
||||||
{
|
{
|
||||||
SDLNet_Init();
|
SDLNet_Init();
|
||||||
|
@ -23,19 +29,14 @@ TCPSend::~TCPSend()
|
||||||
|
|
||||||
bool TCPSend::Send(const void * data, int length)
|
bool TCPSend::Send(const void * data, int length)
|
||||||
{
|
{
|
||||||
printf("trying to send data %i\n", length);
|
|
||||||
// If we aren't connected make a connection
|
|
||||||
if (!Connected()) {
|
|
||||||
Connect();
|
|
||||||
printf("trying to connect\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we failed bail out
|
// If we failed bail out
|
||||||
if (!Connected()) {
|
if (!Connected()) {
|
||||||
printf("not connected\n");
|
DPRINTF("Not connected\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DPRINTF("Sending %i bytes\n", length);
|
||||||
|
|
||||||
if (!length) {
|
if (!length) {
|
||||||
return true; // 0 sized packet will blow our connex
|
return true; // 0 sized packet will blow our connex
|
||||||
}
|
}
|
||||||
|
@ -50,7 +51,7 @@ bool TCPSend::Send(const void * data, int length)
|
||||||
m_socket = nullptr;
|
m_socket = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TCPSend::Connected()
|
bool TCPSend::Connected()
|
||||||
|
@ -58,12 +59,8 @@ bool TCPSend::Connected()
|
||||||
return m_socket != 0;
|
return m_socket != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCPSend::Connect()
|
bool TCPSend::Connect()
|
||||||
{
|
{
|
||||||
if (m_tryCount >= RETRY_COUNT) {
|
|
||||||
return; // already tried and failed so bail out. We do this as instances might load diff times
|
|
||||||
}
|
|
||||||
|
|
||||||
IPaddress ip;
|
IPaddress ip;
|
||||||
int result = SDLNet_ResolveHost(&ip, m_ip.c_str(), m_port);
|
int result = SDLNet_ResolveHost(&ip, m_ip.c_str(), m_port);
|
||||||
|
|
||||||
|
@ -71,5 +68,5 @@ void TCPSend::Connect()
|
||||||
m_socket = SDLNet_TCP_Open(&ip);
|
m_socket = SDLNet_TCP_Open(&ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_tryCount++;
|
return Connected();
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,15 +11,12 @@ public:
|
||||||
~TCPSend();
|
~TCPSend();
|
||||||
|
|
||||||
bool Send(const void* data, int length);
|
bool Send(const void* data, int length);
|
||||||
|
bool Connect();
|
||||||
bool Connected();
|
bool Connected();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void Connect();
|
|
||||||
|
|
||||||
std::string m_ip;
|
std::string m_ip;
|
||||||
int m_port;
|
int m_port;
|
||||||
bool m_connected;
|
|
||||||
int m_tryCount;
|
|
||||||
TCPsocket m_socket; // sdl socket
|
TCPsocket m_socket; // sdl socket
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -341,9 +341,6 @@ xcopy /D /Y "$(ProjectDir)..\Config\*" "$(TargetDir)Config"</Command>
|
||||||
<ClCompile Include="..\Src\Network\NetBoard.cpp" />
|
<ClCompile Include="..\Src\Network\NetBoard.cpp" />
|
||||||
<ClCompile Include="..\Src\Network\TCPReceive.cpp" />
|
<ClCompile Include="..\Src\Network\TCPReceive.cpp" />
|
||||||
<ClCompile Include="..\Src\Network\TCPSend.cpp" />
|
<ClCompile Include="..\Src\Network\TCPSend.cpp" />
|
||||||
<ClCompile Include="..\Src\Network\UDPReceive.cpp" />
|
|
||||||
<ClCompile Include="..\Src\Network\UDPSend.cpp" />
|
|
||||||
<ClCompile Include="..\Src\Network\WinSockWrap.cpp" />
|
|
||||||
<ClCompile Include="..\Src\OSD\Logger.cpp" />
|
<ClCompile Include="..\Src\OSD\Logger.cpp" />
|
||||||
<ClCompile Include="..\Src\OSD\Outputs.cpp" />
|
<ClCompile Include="..\Src\OSD\Outputs.cpp" />
|
||||||
<ClCompile Include="..\Src\OSD\SDL\Audio.cpp" />
|
<ClCompile Include="..\Src\OSD\SDL\Audio.cpp" />
|
||||||
|
@ -515,10 +512,6 @@ xcopy /D /Y "$(ProjectDir)..\Config\*" "$(TargetDir)Config"</Command>
|
||||||
<ClInclude Include="..\Src\Network\NetBoard.h" />
|
<ClInclude Include="..\Src\Network\NetBoard.h" />
|
||||||
<ClInclude Include="..\Src\Network\TCPReceive.h" />
|
<ClInclude Include="..\Src\Network\TCPReceive.h" />
|
||||||
<ClInclude Include="..\Src\Network\TCPSend.h" />
|
<ClInclude Include="..\Src\Network\TCPSend.h" />
|
||||||
<ClInclude Include="..\Src\Network\UDPPacket.h" />
|
|
||||||
<ClInclude Include="..\Src\Network\UDPReceive.h" />
|
|
||||||
<ClInclude Include="..\Src\Network\UDPSend.h" />
|
|
||||||
<ClInclude Include="..\Src\Network\WinSockWrap.h" />
|
|
||||||
<ClInclude Include="..\Src\OSD\Audio.h" />
|
<ClInclude Include="..\Src\OSD\Audio.h" />
|
||||||
<ClInclude Include="..\Src\OSD\Logger.h" />
|
<ClInclude Include="..\Src\OSD\Logger.h" />
|
||||||
<ClInclude Include="..\Src\OSD\Outputs.h" />
|
<ClInclude Include="..\Src\OSD\Outputs.h" />
|
||||||
|
|
|
@ -416,15 +416,6 @@
|
||||||
<ClCompile Include="..\Src\Model3\JTAG.cpp">
|
<ClCompile Include="..\Src\Model3\JTAG.cpp">
|
||||||
<Filter>Source Files\Model3</Filter>
|
<Filter>Source Files\Model3</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\Src\Network\UDPReceive.cpp">
|
|
||||||
<Filter>Source Files\Network</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\Src\Network\UDPSend.cpp">
|
|
||||||
<Filter>Source Files\Network</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\Src\Network\WinSockWrap.cpp">
|
|
||||||
<Filter>Source Files\Network</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\Src\Network\NetBoard.cpp">
|
<ClCompile Include="..\Src\Network\NetBoard.cpp">
|
||||||
<Filter>Source Files\Network</Filter>
|
<Filter>Source Files\Network</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -778,18 +769,6 @@
|
||||||
<ClInclude Include="..\Src\Util\BitRegister.h">
|
<ClInclude Include="..\Src\Util\BitRegister.h">
|
||||||
<Filter>Header Files\Util</Filter>
|
<Filter>Header Files\Util</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\Src\Network\UDPPacket.h">
|
|
||||||
<Filter>Header Files\Network</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\Src\Network\UDPReceive.h">
|
|
||||||
<Filter>Header Files\Network</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\Src\Network\UDPSend.h">
|
|
||||||
<Filter>Header Files\Network</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\Src\Network\WinSockWrap.h">
|
|
||||||
<Filter>Header Files\Network</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\Src\Network\NetBoard.h">
|
<ClInclude Include="..\Src\Network\NetBoard.h">
|
||||||
<Filter>Header Files\Network</Filter>
|
<Filter>Header Files\Network</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
Loading…
Reference in a new issue