Тема для меня новая, так что могу глупить в очевидных вещах.
Вообщем, задумал я с сайта переслать некоторые данные на другой сервер, там их обработать и вернуть. Как обычно, ничего не получилось. Тогда решил сделать задачу менее глобальной.
Поднял на локальной машине Wamp-server и кое-как насобирал скудную инфу(как мне показалось) по сетевым подключениям в PB. В итоге, я кое-как написал сетевой сервер, вот он, голубчик:
EnableExplicit Define ServerPort.i = 8081 Define ClientID.i Define *Buffer Define Response$ Procedure.s ProcessData(Data$) ; Здесь буду обрабатывать полученные данные ProcedureReturn UCase(Data$) ; а пока просто буду возвращать все в верхнем регистре EndProcedure OpenConsole() PrintN("Server started on port " + Str(ServerPort)) *Buffer = AllocateMemory(65536) ; Выделяем память здесь, 65536- максимально возможный буфер If CreateNetworkServer(15, ServerPort) PrintN("Network server created successfully.") Repeat ClientID = NetworkServerEvent(15) If ClientID > 0 Select ClientID Case #PB_NetworkEvent_Data If *Buffer If ReceiveNetworkData(ClientID, *Buffer, 65536) > 0 ; <--- вот тут лезет Invalid memory access (read error at address 2) при попытке заслать данные на сервер PokeB(*Buffer + 65536, 0) ; Null-terminate the string Response$ = PeekS(*Buffer, -1, #PB_UTF8) PrintN("Received: " + Response$) Response$ = ProcessData(Response$) SendNetworkString(ClientID, "HTTP/1.1 200 OK" + #CRLF$) SendNetworkString(ClientID, "Content-Type: text/plain" + #CRLF$) SendNetworkString(ClientID, "Content-Length: " + Str(Len(Response$)) + #CRLF$ + #CRLF$) SendNetworkString(ClientID, Response$) EndIf Else PrintN("Failed to allocate memory.") EndIf Case #PB_NetworkEvent_Disconnect PrintN("Client disconnected: " + Str(ClientID)) EndSelect EndIf ForEver Else PrintN("Failed to create server.") EndIf FreeMemory(*Buffer) CloseConsole()
Сервер запускается, я пытаюсь проверить его, набирая в браузере (при запущенном Wamp) http://127.0.0.1:8081/ и моментально мой сервер падает с ошибкой, что в строке
If ReceiveNetworkData(ClientID, *Buffer, 65536) > 0
Invalid memory access (read error at address 2)
Что у меня не так?
Вместо port 8081 ставил наобум 6500, эффект тот же.
Отредактировано Goga (25.07.2024 17:29:41)