Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 15.03.2011, 12:20   #1
aradriel
AnyKey`щик
 
Регистрация: 15.03.2011
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Принцип работы сокетов в BMX

Есть потребность создать прогу для обмена пакетами с игровым сервером...

Но я сам в сетевых технологиях не особо разбираюсь, хотя программил еще в начале 90-х на спектруме

в общем, кто знает, подскажите или туториал, или сами пример кода киньте с пояснениями, как работают эти сокеты в БМаксе

то есть вот есть сервер, с айпи servip
к нему оригинальный клиент подключается через порт servport
мне нужно для начала отправить пакет подключения к серверу
содержание пакета мне известно, пусть он будет pack1$
далее мне нужно принять пакет от сервера, записать его в пусть pack2$
отправить служебный пакет pack3$
принять служебный пакет pack4$
и так далее


Будьте любезны, кто разбирается в теме, накидайте строки программы для осуществления этого действа, а то я что-то запутался малость =)

Да, все доступные туториалы я уже видел, так что будет лучше, если сами пример приведете, спасибо заранее =)

Для меня собственно не ясно с открытием и закрытием потоков и сокетов. То есть, вот я создал сокет, создал поток сокета, подключил сокет, скопировал в поток сокета нужный мне поток, далее что? Нужно закрыть поток сокета, чтобы сервер принял его? То есть мне сам принцип не очень тут ясен. Что и когда нужно закрывать. Может быть сам сокет нужно закрыть после передачи первого пакета? Потому что первый пакет то я отправляю серверу и он его адекватно принимает. Но вот дальнейшее взаимоедйсвтие с ним уже не происходит - он перестает принимать пакеты и я не могу от него их получить. Это видимо из-за того, что я где-то неверно сработал с потоком сокета или самим сокетом.
(Offline)
 
Ответить с цитированием
Старый 15.03.2011, 14:18   #2
Черный крыс
 
Сообщений: n/a
Ответ: Принцип работы сокетов в BMX

так создай новый сокет и отправляй очередной пакет данных. наскок я знаю, после отправки пакета, сокет автоматом закрывается.

ща на сорсы поглядим...

так там в TSocket есть поле _autoClose и оно по умолчанию равно истине, при сооздании сокета, вырубай это поле.
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
aradriel (15.03.2011)
Старый 15.03.2011, 15:21   #3
aradriel
AnyKey`щик
 
Регистрация: 15.03.2011
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Принцип работы сокетов в BMX

спасибо, полезная инфа, сейчас посмотрю что и как...
(Offline)
 
Ответить с цитированием
Старый 15.03.2011, 15:42   #4
aradriel
AnyKey`щик
 
Регистрация: 15.03.2011
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Принцип работы сокетов в BMX

эээм... че то не то и не так у меня все получается, не мог бы ты, Diablo1909, набросать сюда строчки кода, как это должно выглядеть. А то мне кажется, у меня возможно просто даже в синтаксисе может быть ошибка.

mysocket:TSocket = CreateTCPSocket()
mysocketstream=CreateSocketStream(mysocket)
ConnectSocket(mysocket,servip,servport)
WriteString (mysocketstream,pack1$)
CloseStream mysocketstream
CloseSocket mysocket


а в строке "writestring..." выдает ошибку "unhandled exception: error writing to string"

то есть получается даже первый пакет не отправился, это у меня в b3d первый пакет уходил, но там все проще... тут даже он не идет, не знаю почему
пишет что не может произвести запись в поток, причем ConnectSocket(mysocket,servipip,servport) выдает значение 0 на выходе, значит даже не происходит подключение... вот я и прошу привести пример, потмоу что у меня тут кажется принципиальная ошибка присутствует в самой структуре

все переменные корректно заданы

В общем не могу я запустить даже пару сервер-клиент, для передачи одного пакета, не то что подключится к удаленному серверу через эти сокеты. Взятые примеры, при установке strict выдают кучу ошибок, да и в общем-то не работают как положено, хоть заявлены как примеры.

Не знаю что тут делать. Я говорю, если кто-то знает ситуацию - просто киньте, пожалуйста, строки кода для клиента и сервера... рабочие строки.

Последний раз редактировалось aradriel, 16.03.2011 в 09:49.
(Offline)
 
Ответить с цитированием
Старый 16.03.2011, 10:50   #5
aradriel
AnyKey`щик
 
Регистрация: 15.03.2011
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Принцип работы сокетов в BMX

Хорошо, теперь у меня вот такой код

mysocket:TSocket = CreateTCPSocket()
mysocketstream:TStream=CreateSocketStream(mysocket )
ConnectSocket(mysocket,servip,servport)
WriteString (mysocketstream:TStream,pack1$)


ошибки не возникают, подключение сокета к серверу происходит, но теперь не идет запись в поток сокета нужной мне стринговой перменной

я здесь не пойму саму суть, то есть нужно ли указывать в строке WriteString (mysocketstream:TStream,pack1$) метод TStream, или можно записать WriteString (mysocketstream,pack1$)
ошибок не дает ни тот ни этот вариант, но и записи в поток не происходит

что делать?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:10.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com