|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.03.2010, 18:32 | #1 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Клиент-Сервер
Уважаемые господа, нужна ваша помощь. Задача такова: написать клиент и сервер с возможностью передавать файлы на сервер.
Клиент: #include <iostream> #include <stdlib.h> #include <fstream> #include <conio.h> #include <winsock.h> int main(){ WSADATA wsaData; WORD version; int error; cout<<"this is client"<<endl; version = MAKEWORD( 2, 0 ); error = WSAStartup( version, &wsaData ); /* check for error */ if ( error != 0 ) { cout<<"error occured"<<endl; return FALSE; } /* check for correct version */ if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 ) { cout<<"incorrect WinSock version"<<endl; WSACleanup(); return FALSE; } SOCKET client; cout<<"socet formiration"<<endl; client = socket( AF_INET, SOCK_STREAM, 0 ); struct sockaddr_in sin; memset( &sin, 0, sizeof(sin) ); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_port = htons(7007); cout<<"OK"<<endl; if ( connect( client, (struct sockaddr *)&sin, sizeof sin ) == SOCKET_ERROR ) { cout<<"could not connect to server"<<endl; getchar(); return FALSE; } ifstream ifile("text.txt", ios::binary); cout<<"read beginning"<<endl; if (!ifile){ cout<<"couldnt open file"<<endl; return 1;} char a[sizeof(ifile)]; ifile.read(a, sizeof(ifile)); ifile.close(); send(client,a,sizeof(ifile),0); closesocket(client); WSACleanup(); return 0; } Сервер: #include <windows.h> #include <iostream> #include <winsock.h> #include <stdlib.h> #include <fstream.h> #include <conio.h> int main() { WSADATA wsaData; WORD version; int error; version = MAKEWORD( 2, 0 ); error = WSAStartup( version, &wsaData ); cout<<"this is server"<<endl; /* check for error */ if ( error != 0 ) { /* error occured */ return FALSE; } /* check for correct version */ if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 ) { /* incorrect WinSock version */ WSACleanup(); return FALSE; } SOCKET server; server = socket( AF_INET, SOCK_STREAM, 0 ); /*Server: Starting Server*/ cout<<"start server"<<endl; struct sockaddr_in sin; memset( &sin, 0, sizeof sin ); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_port = htons(7007); if ( bind( server, (struct sockaddr *)&sin, sizeof sin ) == SOCKET_ERROR ) { /* could not start server */ return FALSE; } /*Server: Listen for Client*/ if (SOCKET_ERROR == listen( server, SOMAXCONN )){ std::cerr << "listen"<<endl; return 1; } //Server: Accepting Connection SOCKET worker; int length; length = sizeof(sin); while(1){ worker = accept( server, (struct sockaddr *)&sin, &length ); std::cerr << "accepted\n"; //Client: Create Socket char *buf; buf=(char *)malloc(256); ofstream ofile("text_1.txt", ios::binary); ofile.write(buf,sizeof(buf)); ofile.close(); int recvd = recv(worker, buf, sizeof(buf), 0); if (recvd < 0){ cout<<"error recv"<<endl; return 1; } std::cout << "Received: " << "\n"; closesocket(worker); } closesocket( server ); WSACleanup(); return 0; } При запуске клиент пишет, что не может подключиться к серверу. В чем ошибка?
Единственный способ стать умнее - играть с более умным противником.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
клиент сервер | balamut | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 2 | 01.11.2009 04:43 |
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? | Demol | Работа с сетью в Delphi | 1 | 21.04.2009 16:18 |
Клиент-сервер-клиент | Кронос | Работа с сетью в Delphi | 3 | 24.08.2007 07:57 |
Клиент-сервер | Scorpio | Работа с сетью в Delphi | 6 | 13.02.2007 22:57 |