Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2019, 17:15   #1
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию Socket

К серверу подключаются два клиента
Не правильно считает счет и отправляет каждому клиенту другие данные
Сервер пишет ошибку List index out of bounds

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;

type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var S,S1,H:String;i,k,k1:integer;
begin

H:= IntToStr(Socket.SocketHandle); //+'>'+
S:=Socket.ReceiveText;
ListBox1.Items.Add(S);
k:=0;
k1:=0;
for i:=0 to
ServerSocket1.Socket.ActiveConnecti ons-1 do

begin
If ServerSocket1.Socket.Connections[i].SocketHandle<> Socket.SocketHandle Then
//ServerSocket1.Socket.Connections[i].SendText(S1);

if (ListBox1.Items.Count=2) then

if (ListBox1.Items[0]='Камень') and (ListBox1.Items[1]='Ножницы') then
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);
// ServerSocket1.Socket.Connections[i].SendText(S);
k:=k+1;

if (ListBox1.Items[0]='Ножницы') and (ListBox1.Items[1]='Камень') then
//ServerSocket1.Socket.Connections[i].SendText(S);
k1:=k1+1;
// ListBox1.Clear;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Бумага') and (ListBox1.Items[1]='Камень') then
k:=k+1;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Камень') and (ListBox1.Items[1]='Бумага') then
k1:=k1+1;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Ножницы') and (ListBox1.Items[1]='Бумага') then
k:=k+1;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Бумага') and (ListBox1.Items[1]='Ножницы') then
k1:=k1+1;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Камень') and (ListBox1.Items[1]='Камень') then
// k1:=k1+1;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Ножницы') and (ListBox1.Items[1]='Ножницы') then
// k1:=k1+1;
// S:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

if (ListBox1.Items[0]='Бумага') and (ListBox1.Items[1]='Бумага') then
// k1:=k1+1;
S1:='Вася: '+inttostr(k)+' | '+ 'Петя: '+inttostr(k1);

ServerSocket1.Socket.Connections[i].SendText(S1);

end;
// if (ListBox1.Items.Count=2)then
// ListBox1.Clear;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Active:=false;Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear;
end;

end.
Miracleone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
<socket type='xml'/> ИЛИ <socket type='json'/> зашифровываются пакеты TCP ArtGrek Общие вопросы Web 2 10.02.2017 23:17
C++ & C# SOCKET Olejik C/C++ Сетевое программирование 0 15.01.2013 23:12
Socket IGOMERL C++ Builder 1 16.03.2011 11:05
Raw Socket C++ GanBit Помощь студентам 0 21.09.2010 10:01
socket Артэс C/C++ Сетевое программирование 2 22.06.2009 17:22