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

> ВНИМАНИЕ!

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

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


Бывалый
***

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

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


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

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


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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


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


mea culpa
*****

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

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


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

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



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


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


Бывалый
***

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

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


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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


Попробую соединиться smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 28.05.2009 9:23
Сообщение #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 - 28.05.2009 9:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 28.05.2009 10:28
Сообщение #9


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


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

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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


Вот


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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


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


mea culpa
*****

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

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


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


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


Бывалый
***

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

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


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

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

 



- Текстовая версия 26.04.2024 21:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"