Нужна помощь в настройке (?) socketа, сетевая игра |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Нужна помощь в настройке (?) socketа, сетевая игра |
cooler |
25.05.2009 20:46
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Вот игра есть сетевая, суть такая
2 танка едут навстречу друг другу с разной скоростью, кто первый попадёт в противника - победил или столкнутся. Примитивная Но не синхронизируются сервер и клиент. Выдаёт asynchronys socket error Никак не могу поймать ошибку Может что с компонентами напутал? Сообщение отредактировано: cooler - 25.05.2009 21:21 Прикрепленные файлы Танки.rar ( 20.8 килобайт ) Кол-во скачиваний: 143 |
Unconnected |
26.05.2009 11:12
Сообщение
#2
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Ну так там в диалоге подключения к серверу на обработчике кнопки "принять" вообще ничего не висит... ошибка, которая у тебя вываливается, просто означает что не удалось подключиться, а всё потому, что в свойствах TServerSocket ты не ввёл порт, на котором он будет слушать, а в свойствах TClientSocket тоже не ввёл порт и к тому же адрес, по которому располагается сервер.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
26.05.2009 22:19
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Что-то я совсем запутался, теперь не могу привязать к той кнопке процедуры с параметрами, всё не то
Что там нужно прописать? Помогите, пожалуйста подключить. И в свойствах не знаю что прописывать, т.к смотрел в похожи программах всё также стоит и работает, нужно ли? |
Unconnected |
27.05.2009 20:03
Сообщение
#4
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Ну, если будешь удалённо подключаться, т.е. по IP-адресу, то для клиентского сокета будет так:
clientsocket1.port:=1001; При подключении серверная часть должна быть запущена, и в её свойствах должен быть установлен порт, на который будет подключаться клиент, в данном случае 1001. Ещё не рекомендуется ставить значение порта меньше 1000, т.к. они якобы используются системой.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
27.05.2009 20:38
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Т.е также open сервер и порт прописываем сначала, а тот ip-адрес можно брать из диалогового окна, которое у меня было?
|
Unconnected |
27.05.2009 20:41
Сообщение
#6
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Даже нужно. И ещё советую почитать про асинхронные сокеты в дельфи.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
27.05.2009 21:25
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Попробую соединиться
|
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 |
Unconnected |
28.05.2009 10:28
Сообщение
#9
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Client.Host - почему не client.address? Ты вообще как тестируешь - по интернету, по локальной сети или на своей машине?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
28.05.2009 15:39
Сообщение
#10
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Да client.address тоже пробовал
По идее на одной машине должно работать, если даже айпишник не вводить |
Unconnected |
28.05.2009 16:55
Сообщение
#11
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Это по какой-такой идее?))
Вводить надо, сокет тебе не телепат, чтобы догадываться, куда подключаться) Чтобы подключиться к своей машине, можешь свойству address клиентского сокета присвоить 127.0.0.1 или свойству host того же сокета значение localhost или имя твоего компьютера. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
28.05.2009 17:04
Сообщение
#12
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Цитата свойству address клиентского сокета присвоить 127.0.0.1 Я это имел ввиду Оно по умолчанию у меня такое, но всё равно даже на одном компьютере не связывается |
Unconnected |
28.05.2009 17:06
Сообщение
#13
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
А брандмауэр Windows выключен? Или может ещё какой установлен?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
28.05.2009 17:24
Сообщение
#14
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
выключен, таскал на другие компы и по сети и на одном компе не работает
|
Unconnected |
28.05.2009 18:12
Сообщение
#15
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Прикрепи сюда проект.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
29.05.2009 1:41
Сообщение
#16
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Вот
Прикрепленные файлы Готова.rar ( 9.76 килобайт ) Кол-во скачиваний: 129 |
Unconnected |
29.05.2009 20:54
Сообщение
#17
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Действительно была ошибка, acsess violation, насколько я понял, происходила после обращения к свойствам компонентов client и server (ты их переименовал). Попробовал удалить их с формы и добавить заново, переписал код под новые названия - заработало, даже поиграть удалось
Вот что получилось: -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
30.05.2009 11:44
Сообщение
#18
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
У меня всё-равно не работает. Точнее клиент-сервер не синхронизируются
А ты как запускал, в какой последовательности? |
Unconnected |
30.05.2009 13:02
Сообщение
#19
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Открывал 3(три) копии программы, на одной запускал сервер, на двух других - клиенты...
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
cooler |
30.05.2009 17:17
Сообщение
#20
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
И ездят и стреляют синхронно? Странно
|
Текстовая версия | 26.04.2024 21:04 |