IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Нужна помощь в настройке (?) socketа, сетевая игра
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Вот игра есть сетевая, суть такая
2 танка едут навстречу друг другу с разной скоростью, кто первый попадёт в противника - победил или столкнутся.
Примитивная
Но не синхронизируются сервер и клиент. Выдаёт asynchronys socket error
Никак не могу поймать ошибку smile.gif
Может что с компонентами напутал?

Сообщение отредактировано: cooler -


Прикрепленные файлы
Прикрепленный файл  Танки.rar ( 20.8 килобайт ) Кол-во скачиваний: 174
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ну так там в диалоге подключения к серверу на обработчике кнопки "принять" вообще ничего не висит... ошибка, которая у тебя вываливается, просто означает что не удалось подключиться, а всё потому, что в свойствах TServerSocket ты не ввёл порт, на котором он будет слушать, а в свойствах TClientSocket тоже не ввёл порт и к тому же адрес, по которому располагается сервер.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Что-то я совсем запутался, теперь не могу привязать к той кнопке процедуры с параметрами, всё не то
Что там нужно прописать? Помогите, пожалуйста подключить.
И в свойствах не знаю что прописывать, т.к смотрел в похожи программах всё также стоит и работает, нужно ли?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ну, если будешь удалённо подключаться, т.е. по IP-адресу, то для клиентского сокета будет так:

clientsocket1.port:=1001;
clientsocket1.address:='77.33.44.22'; {Это IP-адрес машины, на которой запущен сервер}
clientsocket1.open;



При подключении серверная часть должна быть запущена, и в её свойствах должен быть установлен порт, на который будет подключаться клиент, в данном случае 1001. Ещё не рекомендуется ставить значение порта меньше 1000, т.к. они якобы используются системой..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Т.е также open сервер и порт прописываем сначала, а тот ip-адрес можно брать из диалогового окна, которое у меня было?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Даже нужно. И ещё советую почитать про асинхронные сокеты в дельфи.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Попробую соединиться smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Опять не работает
Выдает ещё ошибку с памятью почему-то и ту же асинхронную

Вот на кнопку клиент:
Код
procedure TForm1.N3Click(Sender: TObject);
begin
     if Form2.ShowModal=mrOk then begin
        initgame;
        state:=1;
        client.port:=1001;
        Client.Host:=Form2.Edit1.Text;

        Client.Open;
        StatusBar1.SimpleText:='Связь установлена';
        btnClient.Enabled:=False;
        btnServer.Enabled:=False;
        lblIsServer.Caption:='Клиент';
        lblRightT.Enabled:=True;
     end;
end;



Вот на кнопку принять в клиенте :
Код

ModalResult:=mrOK;


А вот на сервер кнопку:

Код
initgame;
     state:=0;
     server.port:=1001;
     Server.Open;
   if server.Active then
     StatusBar1.SimpleText:='Ожидание';
     btnClient.Enabled:=False;
     btnServer.Enabled:=False;
     lblIsServer.Caption:='Сервер';
     lblLeftT.Enabled:=True;
end;


Сообщение отредактировано: cooler -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Client.Host - почему не client.address? Ты вообще как тестируешь - по интернету, по локальной сети или на своей машине?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Да client.address тоже пробовал
По идее на одной машине должно работать, если даже айпишник не вводить
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Это по какой-такой идее?))
Вводить надо, сокет тебе не телепат, чтобы догадываться, куда подключаться) Чтобы подключиться к своей машине, можешь свойству address клиентского сокета присвоить 127.0.0.1 или свойству host того же сокета значение localhost или имя твоего компьютера.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Цитата
свойству address клиентского сокета присвоить 127.0.0.1

Я это имел ввиду smile.gif
Оно по умолчанию у меня такое, но всё равно даже на одном компьютере не связывается
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


А брандмауэр Windows выключен? Или может ещё какой установлен?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


выключен, таскал на другие компы и по сети и на одном компе не работает sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Прикрепи сюда проект.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Вот


Прикрепленные файлы
Прикрепленный файл  Готова.rar ( 9.76 килобайт ) Кол-во скачиваний: 174
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Действительно была ошибка, acsess violation, насколько я понял, происходила после обращения к свойствам компонентов client и server (ты их переименовал). Попробовал удалить их с формы и добавить заново, переписал код под новые названия - заработало, даже поиграть удалось smile.gif
Вот что получилось:


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


У меня всё-равно не работает. Точнее клиент-сервер не синхронизируются
А ты как запускал, в какой последовательности?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Открывал 3(три) копии программы, на одной запускал сервер, на двух других - клиенты...


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


И ездят и стреляют синхронно? Странно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 1:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name