Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Winsok c++ ftp-server-client

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Winsok c++ ftp-server-client
Имя
Сообщение << Старые топики   Новые топики >>
Winsok c++ ftp-server-client - 2011-11-10 20:01:15.983333   
DuTson

Сообщений: 1
Оценки: 0
Присоединился: 2011-11-10 19:52:34.833333
Народ, кто-нибудь может помочь найти ошибку… У меня клиент не коннектится…
Код клиента:
#include "stdafx.h" #include "iostream" #include "string.h" #include "winsock2.h" #include "sock_err_print.cpp" #pragma comment(lib,"ws2_32.lib") using namespace std; int main(array&lt;System::String ^&gt; ^args) { setlocale(LC_ALL, "RUS"); WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); //cout &lt;&lt; " " &lt;&lt; wsaData.szDescription &lt;&lt; endl; //cout &lt;&lt; " " &lt;&lt; wsaData.szSystemStatus &lt;&lt; endl; SOCKET client_socket; client_socket=socket (PF_INET, SOCK_STREAM, IPPROTO_TCP); if(client_socket == INVALID_SOCKET) { ErrorInfo(); //return 1; } /////////////////////////////// sockaddr_in address; address.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); address.sin_port = htons(21); if( connect(client_socket, (sockaddr *)(&address), sizeof(address)) == SOCKET_ERROR ) { ErrorInfo(); //return 1; } else cout&lt;&lt;" is connected" &lt;&lt; endl; //////////////////////////// int res; char rBuff[1024], sBuff[1024]; strcpy(sBuff, "test-client"); res = send(client_socket, sBuff, sizeof(sBuff), 0); if (res == SOCKET_ERROR) {cout &lt;&lt; " Send Failed" &lt;&lt; endl; ErrorInfo();} else cout &lt;&lt; " Send OK" &lt;&lt; endl; res = recv(client_socket, rBuff, sizeof(rBuff), 0); if (res == SOCKET_ERROR) { ErrorInfo(); } else cout &lt;&lt; " Recieved Data is " &lt;&lt; rBuff &lt;&lt; endl; ///////////////////////// closesocket(client_socket); /*{ case WSANOTINITIALISED: cout&lt;&lt;"Перед использованием функции closesocket необходимо вызвать функцию WSAStartup";break; case WSAENETDOWN: cout&lt;&lt;"Сбой в сети";break; case WSAENOTSOCK: cout&lt;&lt;"Указанный в параметре дескриптор не является сокетом";break; case WSAEINPROGRESS: cout&lt;&lt;"Выполняется блокирующая функция интерфейса Windows Sockets";break; case WSAEINTR: cout&lt;&lt;"Работа функции была отменена при помощи функции WSACancelBlockingCall";break; } */ WSACleanup(); cin.get(); return 0; }
Код сервера:
#include "stdafx.h" #include "iostream" #include "string.h" #include "winsock2.h" #include "conio.h" #include "./../t5/sock_err_print.cpp" #pragma comment(lib,"ws2_32.lib") using namespace std; int main(array&lt;System::String ^&gt; ^args) { setlocale(LC_ALL, "RUS"); WSADATA WsaData; char take[100], give[100]; if (WSAStartup(MAKEWORD(1,1), &WsaData)) { strcpy(take, "Инициализация библиотеки wsock32.dll завершилась ошибкой!"); //CharToOem(take, give); cout &lt;&lt; give &lt;&lt; endl; } else // описание сокета // статус сокета (сотояние) "запущен" { if (WsaData.szDescription && WsaData.szSystemStatus) { strcpy(take, " Сокет: WinSock 2.0\n Статус: Running"); //CharToOem(take, give); cout &lt;&lt; give &lt;&lt; endl; } } struct sockaddr_in local; int s; int s1; int rc, port; char rBuff[1024]; char sBuff[1024]; local.sin_family = AF_INET; // семейство протоколов local.sin_port = htons(21); // номер порта протокола local.sin_addr.s_addr = htonl(INADDR_ANY); // адрес узла s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // сокет if (s == INVALID_SOCKET) { cout &lt;&lt; "Socket Error" &lt;&lt; endl; } rc = bind (s, (struct sockaddr * )&local, sizeof (local)); // подключение сервера к сети через сокет по адресу длинной if (rc == SOCKET_ERROR) { cout &lt;&lt; " Bind Error" &lt;&lt; endl; } else { cout &lt;&lt; " Bind OK" &lt;&lt; endl; } // Запуск прослушивания порта rc = listen(s, 4); if (rc == SOCKET_ERROR) { cout &lt;&lt; " Listen Error" &lt;&lt; endl; } else { cout &lt;&lt; " Listen Ok" &lt;&lt; endl; } struct sockaddr_in client; int clientsize = sizeof(client); ////////////////////////////////////////////////////////////////////// s1 = accept(s, (struct sockaddr*)&client, &clientsize); // принять запрос от клиента if (s1 == INVALID_SOCKET) { cout &lt;&lt; " Accept Error" &lt;&lt; endl; } else { cout &lt;&lt; " Accept OK" &lt;&lt; endl; } ////////////////////////////////////////////////////////////////////// rc = recv(s1, rBuff, 1024, 0); // получить данные от клиента if (rc == SOCKET_ERROR) { cout &lt;&lt; " Recieve Error" &lt;&lt; endl; } else { cout &lt;&lt; " Recieve OK" &lt;&lt; rBuff &lt;&lt; endl; } rBuff[rc] = NULL; ////////////////////////////////////////////////////////////////////// strcpy(sBuff, " test-server"); rc = send(s1, sBuff, 1024, 0); // отправить if (rc == SOCKET_ERROR) { cout &lt;&lt; " Send Error" &lt;&lt; endl; } else { cout &lt;&lt; " Send OK" &lt;&lt; sBuff &lt;&lt; endl; } /////////////////////////////////////////////////////////////////////// closesocket(s); // закрытие сокета WSACleanup(); // прекращение работы getch(); return 0; }
Post #: 1
RE: Winsok c++ ftp-server-client - 2011-11-13 17:38:21.930000   
ALE}{_Y

Сообщений: 35
Оценки: 0
Присоединился: 2010-02-14 03:23:27.436666
DuTson, может я отвечаю не совсем вовремя (давно сюда не заглядывал), не обессудьте.
Дожен сказать, что Ваш код у меня полностью работает после снятия блокировки этих приложений Брандмауэром Windows.
Как вариант могу посоветовать Вам добавить exe-файлы этих приложений в исключение Брандмауэра или файерволла имеющегося антивируса, так как с самим кодом у вас все в порядке.
Post #: 2
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Winsok c++ ftp-server-client







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.