PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Программирование на PureBasic в Linux » Проверка доступности сервера в линукс.


Проверка доступности сервера в линукс.

Сообщений 1 страница 5 из 5

1

Как NetworkClient может узнать о разрыве соединения с сервером? Ведь NetworkClientEvent() не знает соответствующего события, в отличии от NetworkServerEvent(). По ссылке Как NetworkClient может узнать о разрыве соединения сервером? есть похожая тема для винды. В ней есть WSAGetLastError() - виндовая приблуда. А вот можно ли как то сделать проверку ошибки в линуксе. Или может есть какая-то возможность реализовать данную процедуру иначе? Примеры только приветсвуются. Спасибо.

0

2

defender написал(а):

Как NetworkClient может узнать о разрыве соединения с сервером? Ведь NetworkClientEvent() не знает соответствующего события

Ну почему же? У функции NetworkClientEvent() есть событие #PB_NetworkEvent_Disconnect. http://purebasic.com/documentation/netw … event.html

0

3

В том то и дело, что не работает. Или может я что-то не так сделал?. Вот код.
------------------

Код:
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

0

4

В винде код работает.
Попробуйте в версию 5.30. Может в 5.11 была какая-то ошибка.

0

5

Спасибо, Пётр, в 5.30 работает без проблем. Можно пометить, что проблема решена

0


Вы здесь » PureBasic - форум » Программирование на PureBasic в Linux » Проверка доступности сервера в линукс.