Просмотр полной версии : Delphi + PHP (клиент-сервер)
Здравствуйте, я впервые тут пишу, сильно не бейте. )
Поставил перед собой задачу написать для начала простое клиент серверное приложнение. Подскажите пожалуйста какой протокол и какие компоненты использовать для организации например чата? Серверная часть должна быть на php на удаленном сервере с постоянным IP/ Клиент - на дельфах.
Лично мне кажется, что для этого тебе подойдут такие языки как JAVA или C#.
Возможно и Delphi тоже. В общем тебе нужно капать в сторону сокетов
_http://ru.wikipedia.org/wiki/Сокет_(программный_интерфе с).
Если что то на JAVA я смогу тебе кинуть пару строк кода. Они 100% рабочие. Сама тестила собственную аську основанную на сокетах.
omg...
Куда катится мир?
А слабо встроить код из дельфи в страничку и держать там?:
1. Создаёшь ActiveX форму
2. Project -> Web Deployment Options
3. Пишешь нужный код
4. Project-> Web Deploy
5. Подключить готовое сам, думаю разберёшься, если что постучи в асю
Инфа по теме:
http://www.codenet.ru/progr/other/delphocx.php
http://www.codenet.ru/progr/delphi/ax_ie.php
--------------------------------------------------------------
Зы: Доберман, тя что забанили? :confused:
Лично мне кажется, что для этого тебе подойдут такие языки как JAVA или C#.
Возможно и Delphi тоже. В общем тебе нужно капать в сторону сокетов
_http://ru.wikipedia.org/wiki/Сокет_(программный_интерфе с).
Если что то на JAVA я смогу тебе кинуть пару строк кода. Они 100% рабочие. Сама тестила собственную аську основанную на сокетах.
Если у вас есть php-код с использованием stream_socket_server поделитесь, брал готовый код с мануала - сервер запускается но при попытке принять ответ, приложение дельфи выскакивает с ошибкой "неправильный reply", жаль сечас на работе, вечером обязательно напишу свои исходники на php и delphi а также ошибку
Нет. Я на JAVA и C# пишу + Oracle и MSSQL.
php забросила давно.
Сори за офтоп, сделала я это для того чтобы автор не ждал от меня кода на php, который я не обещала и не имею. Порты и все дела ты наверника прописываешь. Ждем код, чтобы можно было советовать.
ппц..
можна заросто написать на Delphi клиент, которий будет, например, посилать пост\гет запрос на сервер,.. на сервере php принимает команди..
сам такое делал...
главное научитса понимать что такое сокети..
ппц..
можна заросто написать на Delphi клиент, которий будет, например, посилать пост\гет запрос на сервер,.. на сервере php принимает команди..
сам такое делал...
главное научитса понимать что такое сокети..
с HTTP проблем не возникало, но тут не получиться организировать мгновенной передачи сообщения, т.к. клиенту нужно будет проверять через некоторые промежутки времени (например 5сек) есть ли для него новое сообщение или нет
и?
например:
имя юзер: tester
клиен шлет запрос: get.php?name=tester
get.php:
<?
if (isset($_GET['name']))
{.....
откриваем файл с сообщениями
или достаем их из бази
....
пусть єсть новое сообщения с текстом: 'hello'
тогда в $soobschenia будет hello
.....
print $soobschenia;
?>
все.. клиен принимает результат: hello..
на делфи\пхп такое не делают.. надо чтоб многновенно работало..
Delimiter
20.11.2008, 18:57
через http тащить информацию??? ХИТРОЗАДО както для клиента на Делфи! 8))))))))))
... думаю тут все проще пишешь оба сначала на Делфи.... отлаживаешь .... и затем выбираешь язык сервера!
... понятно что на античате тебя поведут дорогой http .... но это как из песни "!...идем дорогой трудной дорогой не простой" 8)))
ЧАТ СЕРВЕРУ НЕ НУЖЕН ВЭБСЕРВЕР (имеется ввиду тот у кого на Делфи клиент)!!!
ЧАТ СЕРВЕРУ НЕ НУЖЕН ВЭБСЕРВЕР (имеется ввиду тот у кого на Делфи клиент)!!!
возможно я не совсем правильно сформулировал задачу, нужен не чат(это к примеру), а клиент-приложение, которое висело бы в сети и слушало сервер НА НАЛИЧИЕ сообщения... тоисть тут приемлимо использовать tcp протокол
з.ы. и еще вопрос, возможно ли использовать tcp (например с компонента indy idTCPClient) через http прокси?
omg...
Куда катится мир?
А слабо встроить код из дельфи в страничку и держать там?:
1. Создаёшь ActiveX форму
2. Project -> Web Deployment Options
3. Пишешь нужный код
4. Project-> Web Deploy
5. Подключить готовое сам, думаю разберёшься, если что постучи в асю
Инфа по теме:
http://www.codenet.ru/progr/other/delphocx.php
http://www.codenet.ru/progr/delphi/ax_ie.php
--------------------------------------------------------------
Зы: Доберман, тя что забанили? :confused:
Ты хакир...
Пиздос...
На*** такие выебоны если легче сделать CGI на дельфах?[Даже кстати можно на паскале...]
И вообще на*** тут HTTP???
Давай тогда через Oscar, заодно и с QIP' ом пообщаемся...
И вообще сервак можно на питоне написать...
и клиент тоже на питоне...
---
Можно на С++, можно на С# клиента написать, да и сервак на С++ можно...
Конечно же есть разница на чем писать, но тс вроде попросил сервак на пыхопэ, а клиент на делфи.
А по теме, WinSock те в помощь(и два путеводителя это Google и MSDN)
Лучше будет писать на сокетах, wininet тут не годится...
Если сложно на сокетах, можешь использовать стандартный контрол от Макрософт [подключи в дельфе как активекс] (Microsoft Winsock Control), еще можно через TidTCPClient работать...
Вообщем варианты я сказал...дальше ориентируйся на свои возможности и выбирай на свой вкус.
P.S. Набери в гугле: Клиент - сервер DELPHI
P.p.s. Результаты 1 - 10 из примерно 117 000 для Клиент - сервер DELPHI. (0,23 секунд)
ты прикинь как....
0verbreaK
20.11.2008, 23:49
Задача тривиальна, развили тут флейм.
Обычный ДДоС червь использует подобную схему, идея есть - реализуй.
Как и обещал, выкладываю:
Сервер на php, использую стандартный пример из мануала, при коннекте с клиентом посылает ему сообщение string(39) "Hello! The time is 11/20/2008 10:29 pm " такого вида, + если клиент что то отправляет, то string(23) "You have sent : тут echo клиента "
<?php
$master = array();
$socket = stream_socket_server("tcp://localhost:10001", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
$master[] = $socket;
$read = $master;
while (1) {
$read = $master;
$mod_fd = stream_select($read, $_w = NULL, $_e = NULL, 5);
if ($mod_fd === FALSE) {
break;
}
for ($i = 0; $i < $mod_fd; ++$i) {
if ($read[$i] === $socket) {
$conn = stream_socket_accept($socket);
fwrite($conn, "Hello! The time is ".date("n/j/Y g:i a")."\n");
$master[] = $conn;
} else {
$sock_data = fread($read[$i], 1024);
var_dump($sock_data);
if (strlen($sock_data) === 0) { // connection closed
$key_to_del = array_search($read[$i], $master, TRUE);
fclose($read[$i]);
unset($master[$key_to_del]);
} else if ($sock_data === FALSE) {
echo "Something bad happened";
$key_to_del = array_search($read[$i], $master, TRUE);
unset($master[$key_to_del]);
} else {
echo "The client has sent :"; var_dump($sock_data);
fwrite($read[$i], "You have sent :[".$sock_data."]\n");
fclose($read[$i]);
unset($master[array_search($read[$i], $master)]);
}
}
}
}
}
?>
Далее часть на дельфах
Создаю форму с елементами Button1, Memo1, компонентами IdTCPClient1, и IdThreadComponent1(чтоб не виснула прога создаем отдельный поток.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdThreadComponent, StdCtrls, IdComponent,
IdTCPConnection, IdTCPClient;
type
TForm1 = class(TForm)
Button1: TButton;
IdThreadComponent1: TIdThreadComponent;
IdTCPClient1: TIdTCPClient;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure IdThreadComponent1Run(Sender: TIdThreadComponent);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
IdThreadComponent1.Start;
end;
procedure TForm1.IdThreadComponent1Run(Sender: TIdThreadComponent);
begin
IdTCPClient1.Host:='92.63.110.20';
IdTCPClient1.Port:=10001;
IdTCPClient1.Connect;
IdTCPClient1.SendCmd('Heloo serv',Memo1.Text);
end;
end.
Тоисть после нажатия Button1, мы должны отправить сообщение Heloo serv, и получить в ответ в Memo1
Вместо радости получаю
Исключение класса EidException с сообщением 'Reply Code is not valid :Hel'.
Где Hel это по всей видимости ответ сервера "Hello! The t ......
Помогите йопт
p.s. порт будет открыт, пробуйте
P.S. Набери в гугле: Клиент - сервер DELPHI
P.p.s. Результаты 1 - 10 из примерно 117 000 для Клиент - сервер DELPHI. (0,23 секунд)
ты прикинь как....
Да, не спорю ! Клиент сервер Дельфи - есть много примеров и ответов! Но поищи мне ответ на мой вопрос где СЕРВЕРОМ есть машина под unix'ом с использованием php
Ура, сделал без потока на стандартном компоненте TcpClient - работает, кроме компоненты тут две кнопки, лейбл, и мемо
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets;
type
TForm1 = class(TForm)
TcpClient1: TTcpClient;
Button1: TButton;
Label1: TLabel;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure TcpClient1Connect(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TcpClient1.RemoteHost:='92.63.110.20';
TcpClient1.RemotePort:='10001';
TcpClient1.Connect;
end;
procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
Label1.Caption:='Is connected';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
TcpClient1.Open;
TcpClient1.Sendln('Hello');
Memo1.Text:=TcpClient1.Receiveln();
TcpClient1.Close;
end;
end.
Будем писать дальше
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot