Часть полного текста документа:TClientSocket & TServerSocket Макагон Сергей В C++Builder 6 для передачи какой-либо информации по сети удобнее всего использовать компоненты закладки Internet: TClientSocket и TServerSocket. Чтобы лучше разобраться в работе этих компонентов я предлагаю написать простенький сетевой чат, на примере которого можно будет легко увидеть компоненты в действии. Для начала создадим новый проект(File->New->Application), поместим на форму компоненты: TClientSocket и TServerSocket , чтобы наша программа могла быть и клиентом и сервером (не одновременно конечно ;) ). Далее разместим компонент TMemo (закладка Standart) - в нем как вы догадались будет отображаться текст чата. Следующим на форму нужно кинуть компонент TEdit (Standart) - в него мы будем писать текcт, который нужно отправить собеседнику. Ну и конечно тяжело обойтись без кнопки отправить - кидаем на форму TButton . Кроме того что уже есть на форме, нам еще понадобится три кнопки и два эдита (TEdit) (их назначение описывается по ходу обращения к ним) . Итак, на форме : ClientSocket1 и ServerSocket1 Memo1 Edit1,Edit2,Edit3 Button1,Button2,Button3,Button4 Теперь изменяем свойства: Button1->Caption на "Отправить" Button2->Caption на "Создать" Button3->Caption на "Соединиться" и Button4->Caption на "Отключить" . Убираем текст во всех Эдитах . Свойство Memo1->ReadOnly = true , ClientSocket1->Host - нужно написать IP-адрес сервера к которому вы будете присоеденяться (IP-адресс устанавливается в настройках соединения Windows), если прописать 127.0.0.1 , то вы будете конектиться к себе на компьютер (так удобно делать, когда проверяешь на работоспособность свою программу. Запустив ее дважды, одна клиент с 127.0.0.1 , а другая сервер !) если же вы коннектитесь к другу, то заранее договоритесь какой будет Ай-Пи-адрес (143.0.0.5 - например). Но для того чтобы Ай-Пи -адресс можно было легко сменить, мы и положили на форму один из Эдитов, его текст при коннекте и будет отвечать свойству ClientSocket1->Host и ClientSocket1->Address . В свойстве ClientSocket1->Port и ServertSocket1->Port - должны стоять одинаковые значения, чтобы Сервер и Клиент прослушивали и работали на один порт . Число можно выбрать любое (1024 например). Кнопку "Отключиться" изначально нужно сделать недоступной(Enabled = false)так как вначале отсоеденяться нам нет от кого . Дальше опишем обработчики событий для кнопок "Создать", "Соединиться", "Отключить" . Кнопка "Создать" - активизирует сервер. Он начинает прослушивать порт на коннект со стороны клиента . void __fastcall TForm1::Button2Click(TObject *Sender) { ServerSocket1->Active = true ; // Делаем недоступную "Соединиться" (так как мы уже сервер) Button3->Enabled = false // Делаем доступную "Отключиться" (понятно зачем) Button4->Enabled = true Memo1->Lines->Add("Сервер создан") ; } Так наша программа стала сервером ! Давайте опишем клиента!(Кнопка "Соединиться") В Edit3->Text впишите 127.0.0.1 - предполагается что тестироваться будет на одном компьютере (что б других не заморачивать:) void __fastcall TForm1::Button3Click(TObject *Sender) { Edit3->Text = ClientSocket1->Host // Присваиваем Клиенту Ай-Пи из Эдита Edit3->Text = ClientSocket1->Address ServerSocket1->Active = true ; // Делаем недоступную "Создать" (так как мы коннектимся) Button2->Enabled = false // Делаем доступную "Отключиться" (понятно зачем) Button4->Enabled = true } Вот Вы и написали тот минимум который надо для освоения компонентов ! Но кто хочет останавливаться ? А чат доделать ! Правильно пишем дальше: Дальше будем описывать свойства компонентов Клиента и Сервера OnConnect (когда присоединился) . ............ |