|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.10.2011, 21:24 | #1 |
Пользователь
Регистрация: 25.06.2010
Сообщений: 28
|
Простое приложение клиент-сервер
Всем привет. Я с сокетами раньше не работал.Знаю, что этот вопрос задавался много раз, но я не смог найти ответ на него. Мне надо элементарный чат на С++ с использованием TCI\IP. Гуглю уже несколько часов и нигде не могу найти работающее приложение на Microsoft Visual Studio 2008. Буду очень признателен, если кто-то кинет пример.
|
22.10.2011, 01:08 | #2 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
никто не скинет...
давай код, подумаем... |
22.10.2011, 21:49 | #3 |
Пользователь
Регистрация: 25.06.2010
Сообщений: 28
|
Вот код(взял в инете). Выдает ошибки рода:
"Error 7 error LNK2019: unresolved external symbol __imp__listen@8 referenced in function _main a1.obj", "Error 10 error LNK2019: unresolved external symbol __imp__socket@12 referenced in function _main a1.obj", "Error 12 fatal error LNK1120: 9 unresolved externals С:\soket_server.exe" Вот сам код: Сервер: #include<stdio.h> #include<iostream> #include <winsock2.h> #include <string.h> using namespace std; DWORD WINAPI ThreadFunc(LPVOID client_socket) { SOCKET s2=((SOCKET *) client_socket)[0]; char buf[100]; char res[100], *z; strcpy(res, ""); while(recv(s2,buf,sizeof(buf),0)) { int n=0,k=0; k=strlen(buf)-1; if (k>=15) { z=buf; sscanf(z+=n," %s%n",res, &n); //cout<<buf<<endl; send(s2,res,100,0); } else send(s2,"The string lenght is less than 15 symbols",100,0); } closesocket(s2); return 0; } int numcl=0; //*********************************** ************************* void print() { if (numcl) printf("%d client connected\n",numcl); else printf("No clients connected\n"); } //*********************************** ************************* void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ){return;} SOCKET s=socket(AF_INET,SOCK_STREAM,0); sockaddr_in local_addr; local_addr.sin_family=AF_INET; local_addr.sin_port=htons(1280); local_addr.sin_addr.s_addr=0; bind(s,(sockaddr *) &local_addr,sizeof(local_addr)); int c=listen(s,5); cout<<"Server receive ready"<<endl; cout<<endl; SOCKET client_socket; sockaddr_in client_addr; int client_addr_size=sizeof(client_addr ); while((client_socket=accept(s,(sock addr *)&client_addr, &client_addr_size))) { numcl++; print(); DWORD thID;// thID идентификатор типа DWORD CreateThread(NULL,NULL,ThreadFunc,& client_socket,NULL,&thID); } } Клиент: #include<stdio.h> #include<iostream> #include<winsock2.h> using namespace std; void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err=WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ){return;} while (true) { SOCKET s=socket(AF_INET,SOCK_STREAM,0); sockaddr_in dest_addr; dest_addr.sin_family=AF_INET; dest_addr.sin_port=htons(1280); dest_addr.sin_addr.s_addr=inet_addr ("127.0.0.1"); connect(s,(sockaddr *)&dest_addr,sizeof(dest_addr)); char buf[100]; cout<<"Enter the string:"<<endl; fgets(buf,sizeof(buf),stdin); send(s,buf,100,0); if (recv(s,buf,sizeof(buf),0)!=0) { cout<<"Received string:"<<endl<<buf<<endl; } closesocket(s); } WSACleanup(); } |
24.10.2011, 21:23 | #4 |
Пользователь
Регистрация: 25.06.2010
Сообщений: 28
|
Что нужно сделать, если на #include <socket.h> выдает ошибку? То есть, как правильно подключить эту библиотеку, и где ёё взять?
|
03.11.2011, 10:13 | #5 |
Регистрация: 03.11.2011
Сообщений: 3
|
Не знаю, актуально еще или нет. Но ошибки у тебя выдает компоновщик на стадии линковки, т.к. не находит нужные функции listen() и connect(). Хранятся они в либах типа wsock32_2 или ws32_2 - точно уже не помню. Погугли на эту тему. Подключишь нужную библиотеку, получишь программу. Т.к. код компилируется.
#include <socket.h> - такого заголовочного файла не знаю, ты видимо, пытаешься подобрать решение. =) Сразу говорю, оно неверное. Ищи в гугле подключение библиотек в Microsoft Visual Studio 2008, я в студии не работаю, не подскажу. |
05.11.2011, 23:55 | #6 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
Код:
|
22.06.2012, 11:16 | #7 |
Пользователь
Регистрация: 25.06.2010
Сообщений: 28
|
Спасибо, разобрался.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сервер-клиент приложение | Яшар | Общие вопросы Delphi | 8 | 30.05.2011 22:27 |
Клиент/сервер приложение | HarmonicMan | Работа с сетью в Delphi | 0 | 27.04.2010 21:51 |
Приложение клиент\сервер с БД | Vol666 | БД в Delphi | 1 | 08.10.2009 12:28 |
Приложение клиент\сервер | Vol666 | Работа с сетью в Delphi | 5 | 08.10.2009 09:06 |
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? | Demol | Работа с сетью в Delphi | 1 | 21.04.2009 16:18 |