Winsok c++ ftp-server-client
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
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<System::String ^> ^args)
{
setlocale(LC_ALL, "RUS");
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
//cout << " " << wsaData.szDescription << endl;
//cout << " " << wsaData.szSystemStatus << 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<<" is connected" << 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 << " Send Failed" << endl; ErrorInfo();}
else
cout << " Send OK" << endl;
res = recv(client_socket, rBuff, sizeof(rBuff), 0);
if (res == SOCKET_ERROR)
{
ErrorInfo();
}
else
cout << " Recieved Data is " << rBuff << endl;
/////////////////////////
closesocket(client_socket);
/*{
case WSANOTINITIALISED: cout<<"Перед использованием функции closesocket необходимо вызвать функцию WSAStartup";break;
case WSAENETDOWN: cout<<"Сбой в сети";break;
case WSAENOTSOCK: cout<<"Указанный в параметре дескриптор не является сокетом";break;
case WSAEINPROGRESS: cout<<"Выполняется блокирующая функция интерфейса Windows Sockets";break;
case WSAEINTR: cout<<"Работа функции была отменена при помощи функции 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<System::String ^> ^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 << give << endl;
}
else
// описание сокета
// статус сокета (сотояние) "запущен"
{
if (WsaData.szDescription && WsaData.szSystemStatus)
{
strcpy(take, " Сокет: WinSock 2.0\n Статус: Running");
//CharToOem(take, give);
cout << give << 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 << "Socket Error" << endl;
}
rc = bind (s, (struct sockaddr * )&local, sizeof (local)); // подключение сервера к сети через сокет по адресу длинной
if (rc == SOCKET_ERROR)
{
cout << " Bind Error" << endl;
}
else
{
cout << " Bind OK" << endl;
}
// Запуск прослушивания порта
rc = listen(s, 4);
if (rc == SOCKET_ERROR)
{
cout << " Listen Error" << endl;
}
else
{
cout << " Listen Ok" << endl;
}
struct sockaddr_in client;
int clientsize = sizeof(client);
//////////////////////////////////////////////////////////////////////
s1 = accept(s, (struct sockaddr*)&client, &clientsize); // принять запрос от клиента
if (s1 == INVALID_SOCKET)
{
cout << " Accept Error" << endl;
}
else
{
cout << " Accept OK" << endl;
}
//////////////////////////////////////////////////////////////////////
rc = recv(s1, rBuff, 1024, 0); // получить данные от клиента
if (rc == SOCKET_ERROR)
{
cout << " Recieve Error" << endl;
}
else
{
cout << " Recieve OK" << rBuff << endl;
}
rBuff[rc] = NULL;
//////////////////////////////////////////////////////////////////////
strcpy(sBuff, " test-server");
rc = send(s1, sBuff, 1024, 0); // отправить
if (rc == SOCKET_ERROR)
{
cout << " Send Error" << endl;
}
else
{
cout << " Send OK" << sBuff << endl;
}
///////////////////////////////////////////////////////////////////////
closesocket(s); // закрытие сокета
WSACleanup(); // прекращение работы
getch();
return 0;
}
|
|
|
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-файлы этих приложений в исключение Брандмауэра или файерволла имеющегося антивируса, так как с самим кодом у вас все в порядке.
|
|
|
|
|