Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Socket. Помогите начать...

1.7K
15 марта 2006 года
ilyes
181 / / 22.02.2006
Я не давно начал разбираться с Visual C++ 2005 и MFC. Я просто в шоке после C++ Builder'а, еле создал форму с TabControl, а с сокетами ваще труба, не могу найти никакого нормального примера, везде не доконца обьясняют.

1.Если кто сталкивался с сетевым программированием напишите как мне начать плиз, что лучше исспользовать для написания многопоточного сервера и клиента, WinSockets или MFC.

2.Нубическая проблема: не могу добраться до свойств Text у Edit, Caption y Button & Static.
1.9K
15 марта 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by ilyes
Я не давно начал разбираться с Visual C++ 2005 и MFC. Я просто в шоке после C++ Builder'а, еле создал форму с TabControl, а с сокетами ваще труба, не могу найти никакого нормального примера, везде не доконца обьясняют.

1.Если кто сталкивался с сетевым программированием напишите как мне начать плиз, что лучше исспользовать для написания многопоточного сервера и клиента, WinSockets или MFC.

2.Нубическая проблема: не могу добраться до свойств Text у Edit, Caption y Button & Static.



1. Лучше использовать класс CSocket. В нем почти такие же команды как и в WinSock только удобнее работать.
2. SetWindowText("бла-бла");

1.7K
16 марта 2006 года
ilyes
181 / / 22.02.2006
Может есть какие-нибудь сайты или книги в которых все доступно и полно описано. Ато я еще не видел ни одного сайта где доходчиво был описан CSocket от и до. Везде написано: ну обьяви переменную типа сокет, ну присвой ему порт, на некоторых сайтах про Accept и Listen написано, а дальше делай че хош ... и все... Такое чувство что никто толком не знает как с ними работать, а те кто знает не говорит... Даже в MSDN (бесплатном) толком найти ничего не смог.

Меня лично интересует реализация многопоточного сервера и клиента для обмена сообщениями и файлами.
9.4K
04 апреля 2006 года
Savoy
47 / / 04.04.2006
Цитата:
Originally posted by ilyes
Может есть какие-нибудь сайты или книги в которых все доступно и полно описано. Ато я еще не видел ни одного сайта где доходчиво был описан CSocket от и до. Везде написано: ну обьяви переменную типа сокет, ну присвой ему порт, на некоторых сайтах про Accept и Listen написано, а дальше делай че хош ... и все... Такое чувство что никто толком не знает как с ними работать, а те кто знает не говорит... Даже в MSDN (бесплатном) толком найти ничего не смог.

Меня лично интересует реализация многопоточного сервера и клиента для обмена сообщениями и файлами.



Тоже недавно озаботился этим вопросом. Вот мои старые клиент с сервером(просто банально обменваются сообщениями и то криво, приходит тогда, когда отправляешь, сенд-ресив нужно переделать). Написаны, конечно, совершенно чудовищно, но принцип работы понятен, разумеется, есть и альтернативные способы.


КЛИЕНТ:

#include "winsock.h"

#define ANSW_CLNT "answ from clnt\n"
WSADATA wsadata;
char buf[64], buf_2[64];
struct hostent *hp;
struct sockaddr_in clnt_sin, srv_sin;
int s, erc, erb, er, erclose, lenght, len, perem;

void main()
{
using namespace std;

WSAStartup(0x0101, &wsadata);
s = socket(AF_INET, SOCK_STREAM, 0);
memset((char*)&clnt_sin, ' ', sizeof(clnt_sin));
clnt_sin.sin_family = AF_INET;
clnt_sin.sin_addr.s_addr = INADDR_ANY;
clnt_sin.sin_port = 1235;
erb = bind(s, (struct sockaddr*)&clnt_sin, sizeof(clnt_sin));
memset((char*)&srv_sin, ' ', sizeof(srv_sin));
hp = gethostbyname("name");// имя хоста.
srv_sin.sin_family = AF_INET;
srv_sin.sin_port = 1234;
memcpy((char*)&srv_sin.sin_addr, hp->h_addr, hp->h_length);
erc = connect(s, (struct sockaddr*)&srv_sin, sizeof(srv_sin));
er = WSAGetLastError();

while(true)
{
cout<<"write: "<<endl;
cin>>buf_2;
lenght = recv(s, buf, 64, 0);
lenght = send(s, buf_2, sizeof(ANSW_CLNT), 1);
cout<<buf<<endl;
}

cout<<buf;

shutdown(s, 0);
erclose = closesocket(s);
cin>>perem;
exit(0);
}


СЕРВЕР:

#include "winsock.h"

#define ANSW "question srv"

WSADATA wsadata;
struct sockaddr_in ifs, new_ifs;
char buf[64], buf_2[64];
int s_list, new_s, new_len, ersend, erb, erlist, erclose, lenght, len, perem;

void main()
{
using namespace std;

new_len = sizeof(new_ifs);
WSAStartup(0x0101, &wsadata);
s_list = socket(AF_INET, SOCK_STREAM, 0);
memset((char*)&ifs, ' ', sizeof(ifs));
ifs.sin_family = AF_INET;
ifs.sin_addr.s_addr = INADDR_ANY;
ifs.sin_port = 1234;
erb = bind(s_list, (struct sockaddr*)&ifs, sizeof(ifs));
erlist = listen(s_list, 3);

new_s = accept(s_list, (struct sockaddr*)&new_ifs, &new_len);

while(true)
{
cout<<"write: "<<endl;
cin>>buf_2;
ersend = send(new_s, buf_2, sizeof(buf_2), 1);
lenght = recv (new_s, buf, 64, 0);
cout<<buf<<endl;
}

cout<<buf;

shutdown (new_s, 0);
erclose = closesocket(new_s);
cin>>perem;
}

вот такой ужоз))

кстати, взял из какого-то мануала по сокетам, но не работало либо по причине кривости рук, либо ещё из-за чего..
переделал запахало.

16K
04 апреля 2006 года
baltika
15 / / 04.04.2006
Цитата:
Originally posted by ilyes
Я не давно начал...


[COLOR=red]Здесь[/COLOR] посмотри.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог