|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как передать текстовые данные с одного компьютера на другой?
Два компьютера. (допустим) Один компьютер x, а другой y. На обоих есть и запущена эта программы. Как передавать на с одной программы компьютера x другой компьютера y, и обратно? Что-то типа чато, но передаваться будут координаты.
|
#2
|
||||
|
||||
Сложного мало...
Я делаю это с помощью компонента TSocketServer/Client. В Delphi7 установить: delphi7\bin\dclsockets70.bpl. Компоненты>Установить пакет, в окне кликай на "Добавть" ищи по этому пути. После установки они появятся во вкладке Internet.
сервер: Код:
..... procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); //Принятие текста var s:string; begin s:=Socket.ReceiveText; ShowMessage(s); end; ... procedure TForm1.Button1Click(Sender: TObject); //Посылка всем var i:integer; s:string; begin s:='Delphi'; for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do ServerSocket1.Socket.Connections[i].SendText(s); end; ... Код:
.... procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); //Принятие от сервера var s:string; begin s:=Socket.ReceiveText; ShowMessage(s); end; ... procedure TForm1.Button1Click(Sender: TObject); //Посылка var s:string; begin s:='Delphi'; ClientSocket1.Socket.SendText(s); end; ... |
#3
|
||||
|
||||
Спасибо.
Я правильно понял, что для сервера одна прога , а для клиенты другая?
|
#4
|
|||
|
|||
Не совсем. Тебе никто не мешает и сервер и клиента реализовать в одной программе. Более того, у тебя одна прога может слать сама себе сообщения.
ЗЫ. Я бы делал через Indy. |
#5
|
||||
|
||||
А как через Indy? И можно ли так, чтобы я как бы создавал сервак, а мой друг подключался и мы играли? (я делаю мини игру)
|
#6
|
|||
|
|||
Ну если тебе передавать какие-то данные просто, то используй TCmdTCPServer/TCmdTCPClient (кажется так называются). Они удобны тем, что ты просто задаешь команды и работвешь уже с данными. Если будешь передавать бинарные данные, то запакуй их в Base64 (Компоненты соответсвующие у индюка есть). В программе при старте выбираешь режим - клиент или сервер. Все.
Да, демки можно посмотреть на www.indyproject.org. |
#7
|
||||
|
||||
Я не понял что на http://www.indyproject.org/index.en.aspx надо делать, там все на английском. Хотя у меня и есть Сократ Персональный 4.1, но он ужасно переводит.
А можно чтобы был указан IP в компоненте и ему отправлять? А то например так информацию передает наверное всем программа, которые использую эти компоненты. |
#8
|
||||
|
||||
TSocketServer/Client надо ставить свойство Active:=true???
|
#10
|
||||
|
||||
Попробую сделать с ботами...
http://forceway.ru/ |
#11
|
|||
|
|||
вопрос: а через нет чтобы такой чат организовать надо иметь фиксированный ip адресс или он просто по имени найдет или как вообще?
|
#12
|
||||
|
||||
В сокете есть Port, вот ему надо присвоить значение.
http://forceway.ru/ |
#13
|
||||
|
||||
Помогите!
Я сделал простенький чат, компилировал его, отправил exe знакомому и при подключении к серверу у него какая-то ошибка, что типа сервак не найден чтоли... помогите, я думаю у меня не создается сервак....
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ActnList, StdCtrls, ScktComp; type TForm1 = class(TForm) ClientSocket1: TClientSocket; ServerSocket1: TServerSocket; Edit1: TEdit; Button1: TButton; Memo1: TMemo; Button2: TButton; Edit2: TEdit; ActionList1: TActionList; Action1: TAction; Label1: TLabel; Edit3: TEdit; Button3: TButton; procedure Button1Click(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Button2Click(Sender: TObject); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; this: string='client'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Port:=strtoint(edit1.Text); ClientSocket1.Open; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add(Socket.ReceiveText) end; procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin if this='server' then begin for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do ServerSocket1.Socket.Connections[i].SendText(Edit2.Text); Memo1.lines.Add('['+Edit3.Text+'] '+Edit2.Text); Edit2.Clear; end else if this='client' then begin ClientSocket1.Socket.SendText(edit2.text); Memo1.lines.Add('['+Edit3.Text+'] '+Edit2.Text); edit2.clear; end; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add(Socket.ReceiveText); end; procedure TForm1.Button3Click(Sender: TObject); begin // ServerSocket1.Port:=strtoint(edit1.text); ServerSocket1.Open; ServerSocket1.Active:=true; this:='server'; end; end. http://forceway.ru/ |