Работа с сокетами на VCL

Автор: 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();
 
faq/c_c_/working_with_sockets_in_vcl.txt · Последние изменения: 2006/05/10 14:18 (внешнее изменение)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki