Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 6

Сокеты. Ошибка List index output bounds(0) (Дельфи 7)

06.02.2014, 12:12. Показов 1324. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в Делфи 7.В сокетах. хочу передать сообщение с клиента на сервер. Если клиент и сервер на одном компе без проблем работает, а если на двух компах то ошибка List index output bounds(0) или ошибка ASyn-ssocket error 10060. вот код. В чем ошибка
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit kodyv;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
 
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ClientSocket1: TClientSocket;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Button4: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button4Click(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:= 777;
ServerSocket1.Open;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Port:=777;
ClientSocket1.Address:='192.168.1.117';
ClientSocket1.Active:=True;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.Text);
end;
 
procedure TForm1.ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
ServerSocket1.Socket.Connections[0].SendText(Edit2.Text)
end;
 
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
 
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2014, 12:12
Ответы с готовыми решениями:

List index of bounds(3)
for j:= 0 to fpshet.ControlCount-1 do begin if fpshet.Controls is TicLabel then ...

List index out of bounds (12)
Доброго времени суток! Уже второй день ломаю голову над ошибкой(см.скрин). Ошибку выбивает тут: for i:=V1 to V do ...

List index out of bounds (8) //KillDynamicSButton - Delphi
Доброго всем времени суток! По поводу конкретной ошибки поисковик выдал:= НИЧО... Поэтому - новая тема: такой {ошибки} на форуме не...

9
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
06.02.2014, 12:26
Прежде чем пытаться послать что-нибудь клиенту нехило бы убедиться что связь между клиентом и сервером установлена. Воспользуйся для этого событием OnClientConnect
1
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 6
06.02.2014, 12:31  [ТС]
northener не могли бы по подробней
0
 Аватар для TAZAQ
103 / 102 / 51
Регистрация: 28.01.2014
Сообщений: 310
06.02.2014, 12:43
Везде советуют не использовать порты ниже 1025, возьмите выше.
По личному опыту
Delphi
1
ShowMessage(Socket.ReceiveText);
не делайте так, лучше
Delphi
1
2
mem:=Socket.ReceiveText;
ShowMessage(mem);
1
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
06.02.2014, 12:54
Цитата Сообщение от murat123456 Посмотреть сообщение
northener не могли бы по подробней
Ну например. При старте программы кнопка .Button3 должна иметь Enabled = False, а в обработчике onclientconnect написать Button3.Enabled:=True;
1
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 6
06.02.2014, 13:09  [ТС]
Tazaq, net ne pawet kakaya owibka v kode ne poimu
0
 Аватар для TAZAQ
103 / 102 / 51
Регистрация: 28.01.2014
Сообщений: 310
06.02.2014, 13:12
Попробуйте

Delphi
1
2
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
  ServerSocket1.Socket.Connections[i].SendText('Сообщение');
1
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 6
06.02.2014, 13:26  [ТС]
нет не пашет
((((

Добавлено через 18 минут
Lord_Voodoo помогите
Проблема в Делфи 7.В сокетах. хочу передать сообщение с клиента на сервер. Если клиент и сервер на одном компе без проблем работает, а если на двух компах то ошибка List index output bounds(0) или ошибка ASyn-ssocket error 10060. вот код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit kodyv;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
 
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ClientSocket1: TClientSocket;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Button4: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button4Click(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:= 777;
ServerSocket1.Open;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Port:=777;
ClientSocket1.Address:='192.168.1.117';
ClientSocket1.Active:=True;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.Text);
end;
 
procedure TForm1.ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
ServerSocket1.Socket.Connections[0].SendText(Edit2.Text)
end;
 
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
 
end.
0
 Аватар для TAZAQ
103 / 102 / 51
Регистрация: 28.01.2014
Сообщений: 310
06.02.2014, 15:03
Пример банального чата

Сервер:
Delphi
1
2
3
4
5
//сервер включается
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Open;
end;
Delphi
1
2
3
4
5
6
7
8
//получение сообщения
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var mes:string;
begin
mes:=Socket.ReceiveText;
Memo1.Lines.Add(mes);
end;
Delphi
1
2
3
4
//отправка сообщения с сервера всем клиентам
Memo1.Lines.Add(Edit2.Text);
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
  ServerSocket1.Socket.Connections[i].SendText(Edit2.Text);
Клиент:
Delphi
1
2
3
4
5
//отправка сообщения на сервер
procedure TForm1.sButton1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.Text);
end;
Delphi
1
2
3
4
5
6
7
8
//прием сообщения от сервера
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var mes:string;
begin
mes:=Socket.ReceiveText;
Memo1.Lines.Add(mes);
end;
Delphi
1
2
3
4
5
//запуск клиента
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Open;
end;
Проверьте настройки сервера и клиента, а именно:
Сервер:
1)Port больше 1024, к примеру 7777
2)ServerType=stNonBlocking

Клиент:
1)IPAdress сервера, в моем случае 192.168.0.62
2)ClientType=stNonBlocking
3)Port 7777

Для тренировки напишите 2 раздельных приложения.

Вопрос на засыпку, оба компьютера соединены в локальную сеть?
1
0 / 0 / 0
Регистрация: 06.02.2014
Сообщений: 6
07.02.2014, 08:03  [ТС]
Tazaq, оба компа соединены через локалку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2014, 08:03
Помогаю со студенческими работами здесь

Ошибки list index out of bounds(7) и I/O error 103
Ошибка I/O error 103 вылазит при закрытии файла, т.е. когда выполняется CloseFile(q). Вылазит она не всегда, но если раз 10 нажать на...

Ошибка List index of bounds(10)
procedure TForm1.CreateDiagramm; var SER: TLineSeries; i,j,Temp: integer; Color: TColor; Max: Real; begin ...

Ошибка: List index out of bounds(2)
Всем привет, ошибка вылетает на end. запуск происходит нормально, но при запуске главной формы и выборе кнопки, происходит переход, а после...

Ошибка List index out of bounds (8)
Здравствуйте уважаемые форумчане. Подскажите где я неправ- при использовании кода вылетает Ошибка List index out of bounds (8) (ну...

Ошибка: list index out of bounds 12
Здраствуйте, в общем вот такая вот проблемка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru