Code : Tout sélectionner
Structure info
idclient.l
nomclient.s
mail.b
EndStructure
NewList clients.info()
client = AllocateMemory(1000)
If InitNetwork() = 0
End
EndIf
Enumeration
#Window_0
EndEnumeration
Enumeration
#PopupMenu_0
EndEnumeration
Enumeration
#Menu_1
#Menu_2
EndEnumeration
Enumeration
#Listview_0
#Button_0
#Button_1
#CheckBox_0
#Button_2
#Frame3D_0
#Text_0
#Text_1
#Text_2
#Systray_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 98, 201, 600, 300, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget, "Serveur Mail")
AddSysTrayIcon(#Systray_0,WindowID(),"D:\Fichier_PureBasic\PROGRAMMES_SVEN\Network\mail\icon_serveur.ICO")
If CreateGadgetList(WindowID())
ListViewGadget(#Listview_0, 20, 40, 180, 230)
ButtonGadget(#Button_0, 210, 60, 120, 50, "Déconnecter le client")
ButtonGadget(#Button_1, 210, 140, 120, 50, "Envoyer un message")
CheckBoxGadget(#CheckBox_0, 210, 230, 120, 30, "Bloquer les mails")
ButtonGadget(#Button_2, 410, 220, 110, 40, "Quitter le serveur")
Frame3DGadget(#Frame3D_0, 10, 20, 340, 270, "CLIENTS")
TextGadget(#Text_0, 395, 50, 250, 30, "")
TextGadget(#Text_1, 410, 120, 100, 20, "",#PB_Text_Center)
TextGadget(#Text_2, 410, 160, 120, 30, "",#PB_Text_Center)
SetGadgetText(#text_2,"Client connecter: 0")
EndIf
If CreatePopupMenu(#PopupMenu_0)
MenuItem(#Menu_1,"Cacher le serveur")
MenuItem(#Menu_2,"Montrer le serveur")
EndIf
EndIf
EndProcedure
If CreateNetworkServer(5650)
open_window_0()
Repeat
Select NetworkServerEvent()
Case 1
nbclient + 1
SetGadgetText(#text_1,"Un nouveau client c'est connecter !")
SetGadgetText(#text_2,"Client connecter: "+Str(nbclient))
ReceiveNetworkData(NetworkClientID(),client,1)
AddElement(clients.info())
clients.info()\idclient = NetworkClientID()
clients.info()\nomclient = PeekS(client)
clients.info()\mail = 1
client_listview$ = clients.info()\nomclient
AddGadgetItem(#listview_0,nbclient,client_listview$)
Case 2
a = 1
SetGadgetText(#text_1,"Un mail vient d'être envoyer !")
ReceiveNetworkData(NetworkClientID(),client,1)
text$ = PeekS(client)
SelectElement(clients.info(),1)
While clients.info()\idclient <> NetworkClientID()
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
If clients.info()\mail = 1
mail_de$ = clients.info()\nomclient
mail_a$ = StringField(text$,1,"|")
a = 1
While clients.info()\nomclient <> mail_a$
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
mail_a$ = clients.info()\nomclient
client_id.l = clients.info()\idclient
message$ = StringField(text$,2,"|")
text$ = "Mail|"+mail_de$+"|"+mail_a$+"|"+message$
If CountString(message$,"con") Or CountString(message$,"conne") Or CountString(message$,"salo") Or CountString(message$,"salope") Or CountString(message$,"pd") Or CountString(message$,"PD") > 1
If MessageRequester("Message",message$,#MB_YESNO) = #IDYES
SendNetworkString(client_id.l,text$)
Else
SendNetworkString(client_id.l,"Message|Un message pour vous à été censurer !")
EndIf
EndIf
EndIf
Case 4
a = 1
SetGadgetText(#text_1,"Un client c'est déconnecter !")
ReceiveNetworkData(NetworkClientID(),client,1)
SelectElement(clients.info(),1)
While clients.info()\nomclient <> PeekS(client)
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
DeleteElement(clients.info())
RemoveGadgetItem(#listview_0,a)
nbclient - 1
EndSelect
Select EventMenuID()
Case #menu_1
HideWindow(#window_0,1)
Case #menu_2
HideWindow(#window_0,0)
EndSelect
Select EventGadgetID()
Case #button_2
CloseNetworkServer()
End
Case #button_0
a = 1
client$ = GetGadgetItemText(#listview_0,GetGadgetState(#listview_0),0)
SelectElement(clients.info(),1)
While clients.info()\nomclient <> client$
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
SendNetworkString(clients.info()\idclient,"Quit|Vous êtes déconnecter !")
CloseNetworkConnection(clients.info()\idclient)
nbclient - 1
Case #button_1
client$ = GetGadgetItemText(#listview_0,GetGadgetState(#listview_0),0)
SelectElement(clients.info(),1)
a = 1
While clients.info()\nomclient <> client$
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
message$ = InputRequester("Message","Entrer le message à envoyer au client","")
client_id.l = clients.info()\idclient
SendNetworkString(client_id.l,"Message|"+message$)
Case #checkbox_0
client$ = GetGadgetItemText(#listview_0,GetGadgetState(#listview_0),0)
a = 1
SelectElement(clients.info(),1)
While clients.info()\nomclient <> client$
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
clients.info()\mail = 0
Case #listview_0
If EventType() = #PB_EventType_LeftClick
client$ = GetGadgetItemText(#listview_0,GetGadgetState(#listview_0),0)
a = 1
SelectElement(clients.info(),1)
While clients.info()\nomclient <> client$
a = a + 1
NextElement(clients.info())
Wend
SelectElement(clients.info(),a)
If clients.info()\mail = 0
SetGadgetState(#checkbox_0,1)
Else
SetGadgetState(#checkbox_0,1)
EndIf
EndIf
Case #systray_0
DisplayPopupMenu(#popupmenu_0,WindowID())
EndSelect
date$ = FormatDate("Jour: %dd Mois: %mm Année: %yyyy",Date())
SetGadgetText(#text_0,date$)
Until WaitWindowEvent()=#PB_EventCloseWindow
CloseNetworkServer()
EndIf
