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 части :) |
Ответ: TCP server
За создание TCP серверов в Blitzmax отвечает модуль brl.gamenet
Документация и семплы прилагаются вместе с модулем Как по мне значительно удобней и легче чем в Blitz3d, а кроме того работает(проверено на локалхосте и даже через интернет(!)) |
Ответ: 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