C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Работа с сокетами на VCL / Сокеты / Сеть

Работа с сокетами на VCL
A: (Del)
Оригинальная ссылка: нету

Нам надо переслать текст с одного компа на другой (это простейший пример, от него идут все остальные)

1 комп (клиент, посылает сообшение) - прога №1
2 комп (сервер, принимает его)- пргоа №2

Прога №1:
TClientSocket1 кидаем на форму.
Заполняем поля:
ClientSocket1->Port = 1100; // почти любой, лучше после 1000 
ClientSocket1->Host = "Server"; // кому идёт мессага
Коннектимся к серваку:
ClientSocket1->Open(); //можно ClientSocket1->Active = true; 
Отсылаем мессагу:
ClientSocket1->Socket->SendText("Хай!"); // это сообшение получит сервер
Прога №2:
ServerSocket1 кидаем на форму.
Заполняем поля:
ServerSocket1->Port = 1100; // должен быть одинаковым с клиентом
Функция обработчик события "Пришла мессага":
void __fastcall TfmMain::ServerSocket1ClientRead (TObject *Sender, TCustomWinSocket *Socket) 
{     AnsiString sMsg = Socket->ReceiveText(); // полученный текст 
    ShowMessage(sMsg); 
}
Как серверу послать мессагу клиенту?

Используя ServerSocket1->Socket->Connections[i ]->SendText("Текст мессаги для клиента");

i - номер соединения, т.е. для отправки мессаг всем присоединившимся к серверу надо:
for (int i = 0; i < ServerSocket1->Socket->ActiveConnections; i++) 
ServerSocket1->Socket->Connections[i ]->SendText("Текст мессаги для клиента"); 
Соответственно послать мессагу последнеиу присоединившемуся к серверу:
int lu = ServerSocket1->Socket->ActiveConnections - 1; 
ServerSocket1->Socket->Connections[lu]->SendText("Текст последнему клиенту"); 
У клиента функция-обработчик события пришла мессага аналогичен серверному, называеться
void __fastcall TfmMain::ClientSocket1Read (TObject *Sender, TCustomWinSocket *Socket) 
Закрыть соединение:
для клиента: ClientSocket1->Close();
для сервера: ServerSocket1->Close();

Узнать имя своего компа в сети:
ServerSocket1->Open(); 
AnsiString CompName = ServerSocket->Socket->LocalHost; 
ServerSocket1->Close();