forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   TCP (http://forum.boolean.name/showthread.php?t=13011)

Bizzy 27.07.2010 11:30

TCP
 
Почитав статьи: Вышло вот
Сервер:
svrGame=CreateTCPServer(7777)
If svrGame<>0 Then
Print "Сервер запущен удачно."
Else
Print "Ошибка создания сервера."
End
End If
While Not KeyHit(1)
strStream=AcceptTCPStream(svrGame)
If strStream Then
While Not Eof(strStream)
Print ReadString$(strStream)
Delay 2000
Wend
Else
Print "От Apollo X ничего нет ..."
Delay 1000
End If
Wend
End

Клиент:

strmGame=OpenTCPStream("127.0.0.1",7777)
If strmGame<>0 Then
Print "Клиент соединился с сервером."
Else
Print "Сервер не отвечает."
WaitKey
End
End If
While Not KeyHit(1)
; отправим сообщение серверу
WriteString strmGame,"Центр Управления, это Apollo X ..."
Print "Сообщение Центр Управления отправлено успешно..."
Delay 2000
Wend

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

Надеюсь на Вашу помощь.

den 27.07.2010 11:56

Ответ: TCP
 
1) Порт лучше брать от 49152 до 65535
2) Вот, может плможет:
ТСР
ДирекстПлэй

Bizzy 27.07.2010 15:51

Ответ: TCP
 
Цитата:

Сообщение от Den (Сообщение 156285)
1) Порт лучше брать от 49152 до 65535
2) Вот, может плможет:
ТСР
ДирекстПлэй

Это я несколько раз перечитал. Саму суть понять не магу, единой строкой все передавать? или поочередно? (лихо теряется переданная инф).
Когда то натыкался на примере с шариками на плоскости, теперь найти не магу . Может у кого остался в заначке? Поделитесь.
1пост с вопросом еще в силе.

Bizzy 29.07.2010 11:00

Ответ: TCP
 
Еще вопросик:

сервер

svrGame=CreateTCPServer(7777)
If svrGame<>0 Then
Print "Сервер запущен удачно."
Else
Print "Ошибка создания сервера."
End
End If
While Not KeyHit(1)
strStream=AcceptTCPStream(svrGame)
If strStream Then
While Not Eof(strStream)
x1 = Readline(strStream)
x2 = Readline(strStream)
x3 = x1 +x2
Writeline strmGame," x3
Delay 2000
Wend
Else
Print "От Apollo X ничего нет ..."
Delay 1000
End If
Wend
End

клиент

x1 =10
x2 = 20
strmGame=OpenTCPStream("127.0.0.1",7777)
If strmGame<>0 Then
Print "Клиент соединился с сервером."
Else
Print "Сервер не отвечает."
WaitKey
End
End If
While Not KeyHit(1)
; отправим сообщение серверу
WriteLine strmGame, x1
WriteLine strmGame, x2

Print ReadLine(strStream)

Print "Сообщение Центр Управления отправлено успешно..."
Delay 2000
Wend


После запуска вылетает Ошибка "Stream does not exist", помогите.
Без "Print ReadLine(strStream)" все нормально работает, подскажите как получать сообщения от сервера.
Заранее СПС.


Извиняюсь, моя АШИПКА в коде. Выделил красным.
З.Ы. Никогда не делайте Ctrl+C & Ctrl+V, пишити ручками, думайте головой :) Всем удачи!

Nex 14.09.2010 04:19

Ответ: TCP
 
Объясните, пожалуйста, как правильно пользоваться TCP?
Я сделал сервер и изменил код своей игры так сказать под сеть (делал по примеру TCPEngine.bb). Внимательно разобрав код я сделал что бы координаты позиции, поворота и скорости объектов передавались отдельно, но не работает почему-то (видать не до конца понял). И еще как можно создавать "нового игрока" в клиенте когда приходит определенное сообщение от сервера (напр: NewPlayer)? А то щас приходящие данные каждый раз проверяются на имя игрока и если имя новое, то создается игрок. Такой способ как то не удобен..

Spy4433 14.09.2010 11:25

Ответ: TCP
 
ну я пользуюсь такой конструцией

Type Player
Field stream
End Type

port=989789
tcp=CreateTCPServer(port)

repeat
pot=AcceptTCPStream(tcp)
If pot Then
p.Player=New Player
p\stream=pot
;создаем новый тип и записываем поток
;тут размещаем код когда подключается клиент
EndIf

For p.player=Each player
If ReadAvail(p\stream) Then
com$=ReadLine(p\stream)
;здесь проверяем не пришло ли сообщение , и если пришло то читаем его
endif
next

until keyhit(1)
end

P.S может такая конструкция не совсем правельная :)

cyberblut 14.09.2010 13:36

Ответ: TCP
 
Я делал систему ивентов, на которые подписываются листенеры. Например приходит мессадж NewPlayer - вызываются все подписанные на него листенеры и выполняют метод Process (например), в котором уже как раз и создаётся новый игрок.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot