Как 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 работает без проблем. Можно пометить, что проблема решена