У меня 2 сокета. Мне нужно сделать так: Если приходит информация на 1й, то 2й ее отсылает. Если на 2й, то 1й ее отсылает. Вот мой код:
| Код | int dms_net::CClientThread::Run () { unsigned long ulMode = 1; ioctlsocket (m_ServerSock, FIONBIO, &ulMode); ulMode = 1; ioctlsocket (m_ClientSock, FIONBIO, &ulMode); char Buff [1024]; fd_set ReadSet; while (!IsMustStop ()) { FD_ZERO (&ReadSet); FD_SET (m_ServerSock, &ReadSet); FD_SET (m_ClientSock, &ReadSet);
int ReadySock = select (0, &ReadSet, NULL, NULL, NULL); if (FD_ISSET(m_ServerSock, &ReadSet)) { int ret = recv (m_ServerSock, Buff, 1024, 0); if (ret == 0)break; else if (ret == SOCKET_ERROR) { //Обработать ошибку break; } Buff[ret] = '\0';
std::cout << Buff << std::endl;
if (send (m_ClientSock, Buff, ret, 0)==SOCKET_ERROR) { //Обработать ошибку break; } }
if (FD_ISSET(m_ClientSock, &ReadSet)) { int ret = recv (m_ClientSock, Buff, 1024, 0); if (ret == 0)break; else if (ret == SOCKET_ERROR) { //Обработать ошибку break; } Buff[ret] = '\0';
std::cout << Buff << std::endl;
if (send (m_ServerSock, Buff, ret, 0)==SOCKET_ERROR) { //Обработать ошибку break; } } } return 0; } |
Я правильно делаю? |