В дополнение к ноутбуку и устройству с ESP8266 ещё точка(и) доступа наверное? Если сеть локальная, IP адреса известны, то вообще никаких проблем нет. У меня Builder 4.0, принимаю данные примерно так:
В начале описания класса TForm1 добавляем:
#define WM_READSOCKMESSAGE (WM_APP + 400)
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
protected:
void __fastcall InSockReadMessageHandler(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_READSOCKMESSAGE, TMessage, InSockReadMessageHandler)
END_MESSAGE_MAP(TForm)
__published: // IDE-managed Components
.
. // здесь вся остальная начинка
.
}
Реализация работы через сокет:
// запускаем приём данных
void __fastcall TForm1::Device_connectExecute(TObject *Sender)
{
// открываем сокет
ServerSocket = OpenInSocket(ServerPort, ServerAddress);
}
// останавливаем приём данных
void __fastcall TForm1::Device_disconnectExecute(TObject *Sender)
{
if(ServerSocket != NULL) {closesocket(ServerSocket); ServerSocket = NULL;}
}
SOCKET TForm1::OpenInSocket(DWORD Port, DWORD IPADRESS)
{
SOCKET m_hServerSocket;
SOCKADDR_IN m_sockServerAddr;
int BindRezult;
memset(&m_sockServerAddr,0,sizeof(m_sockServerAddr));
m_sockServerAddr.sin_family = AF_INET;
m_sockServerAddr.sin_addr.S_un.S_un_b.s_b1=(BYTE)(IPADRESS>>24);
m_sockServerAddr.sin_addr.S_un.S_un_b.s_b2=(BYTE)(IPADRESS>>16);
m_sockServerAddr.sin_addr.S_un.S_un_b.s_b3=(BYTE)(IPADRESS>>8);
m_sockServerAddr.sin_addr.S_un.S_un_b.s_b4=(BYTE)(IPADRESS);
m_sockServerAddr.sin_port = htons((WORD)Port);
m_hServerSocket = socket(AF_INET, SOCK_DGRAM, DEFAULT_PROTOCOL);
if(m_hServerSocket == INVALID_SOCKET)
{
Application->MessageBox("Server socket was not open","Error",IDOK);
return NULL;
}
BindRezult = bind(m_hServerSocket, (LPSOCKADDR)&m_sockServerAddr, sizeof(m_sockServerAddr));
if(BindRezult!=0)
{
closesocket(m_hServerSocket);
Application->MessageBox("Server socket was not binded","Error",IDOK);
return NULL;
}
// MESSAGE based input data treatment:
WSAAsyncSelect(m_hServerSocket,this->Handle,WM_READSOCKMESSAGE,FD_READ);
return m_hServerSocket;
}
void __fastcall TForm1::InSockReadMessageHandler(TMessage &Message)
{
SOCKADDR_IN SourceSock;
BYTE buf[2000];
int size;
int fromlen = sizeof(SourceSock);
size = recvfrom( ServerSocket, (char*)buf, sizeof(buf), 0, (LPSOCKADDR)&SourceSock, &fromlen);
// и далее распоряжаемся полученными данными в буфере "buf"
}