forum.boolean.name

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

Spy4433 24.09.2010 15:56

TCP server
 
Дайте кто нибудь пример Tcp сервера на BM


на blitz3d все просто при создании

Type streams
Field stream
End Type

tcp=CreateTCPServer(port)

repeat
new_potok=AcceptTCPStream(tcp)
If new_potok Then
ss.streams=New streams
ss\stream=new_potok
endif

For ss.stream=Each streams
If ReadAvail(ss\stream) Then
a$=readline(ss\stream)
writeline ss\stream,a$
endif
next

until keyghit(1)


как такое реализовать на blitzmax'e ?

1. создаем
Global tcp_port:Int=111222
Global socket:Tsocket
socket=CreateTCPSocket()
BindSocket(socket,tcp_port)

2. далее
тип для потоков

Type client
Field stream:Tsocketstream
Field socket:Tsocket
End Type
Global client_list:TList=New TList

цикл

3.If SocketAccept(socket) Then проверяем если есть то создаем сам поток

c:client=New client
client_list.AddLast c
c.stream=CreateSocketStream(c.socket)

4. вот дальше непонимаю

For c:client=EachIn client_list
cn=cn+1
If SocketReadAvail(c.socket) Then
a$=ReadLine(c.stream) - тож непонятно
EndIf
Next

5. отправка writeline(c.stream) - тож непонятно

хотелось бы больше узнать про работу с сокетами и потоками для них в BM :) ну или готовый пример с коментариями 4 и 5 части :)

Reks888 24.09.2010 19:20

Ответ: TCP server
 
За создание TCP серверов в Blitzmax отвечает модуль brl.gamenet
Документация и семплы прилагаются вместе с модулем

Как по мне значительно удобней и легче чем в Blitz3d, а кроме того работает(проверено на локалхосте и даже через интернет(!))

Жека 27.09.2010 08:13

Ответ: TCP server
 
Вложений: 1
После BindSocket(socket,tcp_port) я выполнял команду SocketListen(socket), чтоб сервер стал слушающим, т.е. мог ловить подключаемых клиентов.

Отправку данных делал не через потоки, а через методы самого сокета - socket.Send(data, size) и socket.Recv(data, size).

Прилагаю исходник. Там есть сервер и клиент. Сервер "следит" за позицией объектов, которые двигаются на клиентской стороне.
Сделано в виде классов (type).


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

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