Как NetworkClient может узнать о разрыве соединения с сервером? Ведь NetworkClientEvent() не знает соответствующего события, в отличии от NetworkServerEvent(). По ссылке Как NetworkClient может узнать о разрыве соединения сервером? есть похожая тема для винды. В ней есть WSAGetLastError() - виндовая приблуда. А вот можно ли как то сделать проверку ошибки в линуксе. Или может есть какая-то возможность реализовать данную процедуру иначе? Примеры только приветсвуются. Спасибо.
Проверка доступности сервера в линукс.
Сообщений 1 страница 5 из 5
Поделиться226.09.2014 16:44:22
Как NetworkClient может узнать о разрыве соединения с сервером? Ведь NetworkClientEvent() не знает соответствующего события
Ну почему же? У функции NetworkClientEvent() есть событие #PB_NetworkEvent_Disconnect. http://purebasic.com/documentation/netw … event.html
Поделиться326.09.2014 16:56:07
В том то и дело, что не работает. Или может я что-то не так сделал?. Вот код.
------------------
OpenWindow(1, 0, 0, 600, 400, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
i=0
ButtonGadget(2,20,20,300,35,"Послать серверу значение i (="+Str(i)+")")
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
;Procedure CheckServ(*t)
; Repeat
; ConnectionID1=OpenNetworkConnection("192.168.1.10", Port1)
; If Not ConnectionID1
; MessageRequester("PureBasic - Client", "Server is down...", 0)
; CloseNetworkConnection(ConnectionID)
; End
; EndIf
; ForEver
;EndProcedure
Port = 6832
; Port1=6833
ConnectionID = OpenNetworkConnection("192.168.1.10", Port)
If ConnectionID
Repeat
;PokeS(*Buffer_to, 1 , #PB_Unicode)
;SendNetworkData(ConnectionID,*Buffer_to,#PB_Unicode)
;Delay(100)
;ErrorCode
Select NetworkClientEvent(ConnectionID)
Case #PB_NetworkEvent_Disconnect
MessageRequester("PureBasic - Client", "Server is down...", 0)
CloseNetworkConnection(ConnectionID)
End
EndSelect
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
CloseNetworkConnection(ConnectionID)
End
Case #PB_Event_Gadget
Select EventGadget()
Case 2
*Buffer_to = AllocateMemory(100)
PokeS(*Buffer_to, Str(i) , #PB_Unicode)
SendNetworkData(ConnectionID,*Buffer_to,#PB_Unicode)
FreeMemory(*Buffer_to)
i=i+1
SetGadgetText(2,"Послать серверу значение i (="+Str(i)+")")
EndSelect
EndSelect
ForEver
;MessageRequester("PureBasic - Client", "Client connected to server...", 0)
;SendNetworkString(ConnectionID, "An hello from a client !!! :-)")
;MessageRequester("PureBasic - Client", "A string has been sent to the server, please check it before quit...", 0)
;CloseNetworkConnection(ConnectionID)
Else
MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
EndВерсия Пурика - 5.11 х64
Поделиться426.09.2014 17:21:08
В винде код работает.
Попробуйте в версию 5.30. Может в 5.11 была какая-то ошибка.
Поделиться526.09.2014 18:21:11
Спасибо, Пётр, в 5.30 работает без проблем. Можно пометить, что проблема решена