![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с сокетами [D7, WinXP]
Boooze © (2008-08-27 23:17:00)В общем написал клиен и сервер(чат),переписал точнее с какой то статьи,запускаю сервер ,запускаю клиент ,вбиваю айпи ,порт,нажимаю коннект ,а мне сообщение об ошибке типа:
'' not avaible value.
Boooze (2008-08-28 16:52:00) [21]
сервер:
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port := 777; {Указываем порт, который будет слушать сервер}
ServerSocket1.Active := True; {Активизируем сервер}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Active := False; {Выключаем сервер}
ServerSocket1.Close; {Закрываем соединение}
Close; {Завершаем программу}
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
S: String;
I: Integer;
begin
{Добавляем к строке сообщения клиента идентификатор его сокета}
S := InTtoStr(Socket.SocketHandle) + '>' + Socket.ReceiveText;
ListBox1.Items.Add(S); {Добавляем сообщение в список}
{Перебираем все установленные соединения}
For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
{Проверяем - если идентификатор очередного сокета не совпадает
с идентификатором сокета, приславшего сообщение, то...}
if ServerSocket1.Socket.Connections[i].SocketHandle <> Socket.SocketHandle then
{... посылаем очередной клиентской программе новое сообщение}
ServerSocket1.Socket.Connections[i].SendText(S);
end;
клиент:
procedure TForm1.Button1Click(Sender: TObject);
{
Подключение к серверу
}
begin
ClientSocket1.Address := Edit2.Text; {Адрес сервера}
ClientSocket1.Port := StrToInt(Edit3.text); {Порт сервера}
{Если ClientSocket1 не включен, то...}
if not ClientSocket1.Active then
ClientSocket1.Active := True; {..включаем его}
end;
procedure TForm1.FormDestroy(Sender: TObject);
{
Закрытие программы
}
begin
ClientSocket1.Active := False; {Выключаем клиента}
ClientSocket1.Close; {Закрываем сокет}
Close; {Закрываем программу}
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
{
Обработка данных от сервера
}
begin
{Добавляем новое сообщение от сервера в список}
Listbox1.Items.Add(Socket.ReceiveText);
end;
procedure TForm1.Button2Click(Sender: TObject);
{
Послать сообщение
}
begin
{Если сообщение не пусто, то...}
If Edit1.Text <> '' then
ClientSocket1.Socket.SendText(Edit1.text); {..посылаем его на сервер}
Edit1.Text := ''; {Очищаем поле ввода}
end;
а насчет проверить через стандартные ,не получиться ,так как делфи у мну "урезанная".
Сергей М. (2008-08-28 14:57:00) [22]
> пооверить рабюотают ли у меня сокеты вообще вот переписал
> со статьи что бы убедиться
Если речь идет о TServerSocket/TClientSocket или TTCPServer/TTCPClient, то ты проделал мартышкин труд, переписывая чего-то там с какой-то там статьи - для проверки можно было воспользоваться готовым демо-проектом chat.dpr или netchat.dpr, лежащим прямо перед носом, в папке ($DELPHI\DEMOS\INTERNET)
Slym (2008-08-28 14:03:00) [23]Boooze (28.08.08 13:47) [2]
переписал со статьи
что за статья, ссылку давай или код "своего" чата... ато телепатор даже на максимальной мощьности не принимает...
Boooze (28.08.08 13:47) [2]
кто нибудь знает откуда эта ошибка?
думаю при столь скудных исходных данных - никто
Boooze (2008-08-28 13:47:00) [24]Да все нрмально переписал ,просто вот писал сам была какая то ошибка ,попробывал ,мб когда сокеты устанавливал что нибудь не так делал?(хотя че там можно не так сдеать?)решил просто пооверить рабюотают ли у меня сокеты вообще вот переписал со статьи что бы убедиться ,а вот тут не с сокетами а вообще какая то херня ,про переменную какаую то чилового типа .БЛин мб ,кто нибудь знает откуда эта ошибка?
Slym (2008-08-28 04:46:00) [25]Boooze (27.08.08 23:17)
переписал
плохо переписал...
Вот я делаю все как сосед (у него сын), а у меня дочь где я акарал?