ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
13 июля
477435 Топик полностью
ASDFS, USB-гуру (30.12.2013 19:27, просмотров: 118) ответил Codavr на Ну так выложи свой самопал не жмоться
Мой самопал остро заточен под мои задачи и протоколы. Но вот кусманчик из него кому то может помочь при ответе на вопрос какие ключевые слова изучать >>>>  void __fastcall TProXLib::E_ServerStart(TRX_Stat *_Stat, u16_t _port) { DWORD i; _Stat->S = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); i = 1; setsockopt (_Stat->S, SOL_SOCKET, SO_RCVTIMEO, (char *)&i, sizeof(i)); i = 100; setsockopt (_Stat->S, SOL_SOCKET, SO_SNDTIMEO, (char *)&i, sizeof(i)); i = 1; setsockopt(_Stat->S, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i)); _Stat->_addr.sin_family = AF_INET; _Stat->_addr.sin_port = htons(_port); _Stat->_addr.sin_addr.s_addr = htonl (INADDR_ANY); bind(_Stat->S, (SOCKADDR*)&_Stat->_addr, sizeof(_Stat->_addr)); _Stat->Evnt = WSACreateEvent(); WSAEventSelect(_Stat->S, _Stat->Evnt, FD_READ); _Stat->_TXBufPos = 0; } void __fastcall TProXLib::E_ServerTX(TRX_Stat *_Stat, char* _IP) { _Stat->_addr.sin_addr.s_addr = inet_addr(_IP); sendto(_Stat->S, _Stat->_TXBuf, _Stat->_TXBufPos, 0, (SOCKADDR*)&_Stat->_addr, sizeof(_Stat->_addr)); _Stat->_TXBufPos = 0; } int __fastcall TProXLib::E_ServerRX(TRX_Stat *_Stat) { _Stat->_RXBufPos = 0; _Stat->_RXBufLen = 0; if (WSAWaitForMultipleEvents(1, &_Stat->Evnt, true, 0, false) == 0) { _Stat->_RXBufLen = sizeof (_Stat->_addr); _Stat->_RXBufLen = recvfrom(_Stat->S, _Stat->_RXBuf, sizeof(_Stat->_RXBuf), 0, (SOCKADDR*)&_Stat->_addr, &_Stat->_RXBufLen); if ((_Stat->_RXBufLen == SOCKET_ERROR) || (_Stat->_RXBufLen <= 0)) { int i = WSAGetLastError(); _Stat->_RXBufLen = 0; // MainWindow->Edit6->Text = Format("%d",ARRAYOFCONST((i))); } } return (_Stat->_RXBufLen); } void __fastcall TProXLib::E_ServerFlush(TRX_Stat *_Stat) { do { _Stat->_RXBufLen = 0; _Stat->_RXBufLen = recvfrom(_Stat->S, _Stat->_RXBuf, sizeof(_Stat->_RXBuf), 0, (SOCKADDR*)&_Stat->_addr, &_Stat->_RXBufLen); } while (!((_Stat->_RXBufLen == SOCKET_ERROR) || (_Stat->_RXBufLen <= 0))); } void __fastcall TProXLib::E_ServerStop(TRX_Stat *_Stat) { WSACloseEvent(_Stat->Evnt); closesocket(_Stat->S); }