Seite 1 von 1
Kleiner LAN-Chat
Verfasst: 01.11.2005 15:14
von KeyKon
Dies ist einfach nur ein kleiner LAN-Chat mit Server und Client (wer hätte es gedacht). Schauts euch mal an:
http://keykon.ke.ohost.de/daten/chat.zip Zip,33KB
Viel Spaß! Würde mich über Feedback freuen
KeyKon
Verfasst: 01.11.2005 16:49
von Blackskyliner
Nicht schlecht, des mit der Ausgabe ist nett gemacht :). Ich mache zurzeit auch einen Chat aber wird bisschen grösser ausgelegt sein ;)
Achja und mit der Farbe gibts da noch fehler... ich hatte z.B. fie Farbe Schwarz obwohl ich Grün ausgewählt hatte...
WinXP SP2 (Ich hasse dieses System...)
Hab beim FarbSelecter mit ENTER bestätigt.
Re: Kleiner LAN-Chat
Verfasst: 04.07.2013 18:49
von julianhb89
Tagchen,
Bin noch relativ neu was das Thema PB angeht und hab großes Interesse einen LAN Chat zu schreiben. Drum hole ich diese alte Kamelle hoch. Würdest du (Threadersteller) mir eventuell Einblicke in deinen Source Code gewähren? Das wäre super. Hoffe das du noch aktiv bist.

Re: Kleiner LAN-Chat
Verfasst: 05.07.2013 03:14
von KeyKon
Puh, also den 8 Jahre alten Code möchte ich dir ungern antun, da war ich noch ganz frisch beim Programmieren und das Ganze war ein ziemliches Gepfriemel, mal ganz davon abgesehen, dass es wohl im aktuellen PB nur mit seeehr vielen Änderungen wieder zum Leben erweckt werden kann.
Prinzipiell ist so ein Chat, wenn man absolut keinen Wert auf Komfort legt aber recht einfach zu machen, vor allem mit einem dedicated Server, wie in diesem Fall.
Ich gugg gerne mal in meinem Archiv ob ich was Kleines finde, ich hab mich nämlich durchaus viele Male mit solchen Netzwerk-Geschichten beschäftigt!
LG KeyKon
Re: Kleiner LAN-Chat
Verfasst: 06.07.2013 00:20
von julianhb89
Hey super, vielen Dank
Da bin ich mal gespannt

Re: Kleiner LAN-Chat
Verfasst: 06.07.2013 11:03
von KeyKon
So, hier mal so ziemlich das Abgespeckteste was geht.
Ist aber im Prinzip sehr unschön, also seh es bitte nur als Grundlagenerklärung, wenn du was umfangreicheres machst solltest du auf einige Sachen achten:
- -Frontend und Backend sollten durch Thread getrennt laufen
-Es müssen beim Netzwerkverkehr, gerade wenn viel Aufkommen zu erwarten ist, saubere Packages geschnürt und verschickt werden, da mehrere im Buffer liegen könnten und getrennt werden müssen
-Beim Fenster-Design sollte man Konstanten verwenden um den Überblick zu behalten
Server:
Code: Alles auswählen
EnableExplicit
InitNetwork()
#BUFFERSIZE = 1024
Define *receiveBuffer = AllocateMemory(#BUFFERSIZE)
Define receivedLen
NewList Users.i()
If Not CreateNetworkServer(0,12345)
Debug "FailCreation"
End
EndIf
OpenConsole()
PrintN("Server up and running!")
Repeat
Select NetworkServerEvent()
Case #PB_NetworkEvent_Connect
PrintN("New User")
AddElement(Users())
Users() = EventClient()
Case #PB_NetworkEvent_Disconnect
PrintN("Lost User")
ForEach Users()
If Users() = EventClient()
DeleteElement(Users())
Break
EndIf
Next
Case #PB_NetworkEvent_Data
Print("Message - ")
receivedLen = ReceiveNetworkData(EventClient(),*receiveBuffer,#BUFFERSIZE)
If receivedLen > 0
PrintN(PeekS(*receiveBuffer,receivedLen))
ForEach Users()
If Users() <> EventClient()
SendNetworkData(Users(),*receiveBuffer,receivedLen)
EndIf
Next
Else
PrintN("Fail")
EndIf
Default
Delay(5)
EndSelect
ForEver
Client:
Code: Alles auswählen
EnableExplicit
#BUFFERSIZE = 1024
Define *receiveBuffer = AllocateMemory(1024)
Define *sendBuffer
Define cid
Define name.s = "KeyKon2"
Define sendText.s
InitNetwork()
OpenWindow(0,0,0,640,480,"MiniChat",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(0,10,10,620,430,"Chat",619)
StringGadget(1,10,450,620,20,"")
AddKeyboardShortcut(0,#PB_Shortcut_Return,0)
cid = OpenNetworkConnection("127.0.0.1",12345)
If cid = 0
Debug "FailConnection"
End
EndIf
Repeat
Select WaitWindowEvent(5)
Case #PB_Event_CloseWindow
CloseNetworkConnection(cid)
End
Case #PB_Event_Menu
Select EventMenu()
Case 0
If Len(GetGadgetText(1)) > 0 And Len(GetGadgetText(1))+Len(name)+2 < #BUFFERSIZE
sendText = name+": "+GetGadgetText(1)
*sendBuffer = AllocateMemory(Len(sendText))
PokeS(*sendBuffer,sendText)
If SendNetworkData(cid,*sendBuffer,MemorySize(*sendBuffer)) = MemorySize(*sendBuffer)
AddGadgetItem(0,-1,sendText)
SendMessage_(GadgetID(0),#EM_SCROLL,#SB_BOTTOM,0) ;Nach unten scrollen
SetGadgetItemColor(0,CountGadgetItems(0)-1,#PB_Gadget_BackColor,RGB(192,192,192))
SetGadgetText(1,"")
sendText = ""
EndIf
FreeMemory(*sendBuffer)
EndIf
EndSelect
EndSelect
If NetworkClientEvent(cid) = #PB_NetworkEvent_Data
If ReceiveNetworkData(cid,*receiveBuffer,#BUFFERSIZE) > -1
AddGadgetItem(0,-1,PeekS(*receiveBuffer))
SendMessage_(GadgetID(0),#EM_SCROLL,#SB_BOTTOM,0) ;Nach unten scrollen
EndIf
EndIf
ForEver
Bei Fragen immer her damit, vll bastel ich auch mal wieder etwas, was einem etwas höheren Standard genügt...
LG KeyKon
Re: Kleiner LAN-Chat
Verfasst: 06.07.2013 11:29
von julianhb89

vielen Dank
Das hilft mir schon sehr viel weiter, top !
Re: Kleiner LAN-Chat
Verfasst: 08.10.2013 00:54
von Moxl
hi,
mal ne frage... wie genau heißt die schriftart die du in dem chatfenster verwendet hast?
mfg Moxl
Re: Kleiner LAN-Chat
Verfasst: 08.10.2013 01:42
von KeyKon
Fixedsys wenn ich mich nicht täusche, die gute alte Schrift von Console und Notepad (bis WinXP)^^
LG KeyKon
Re: Kleiner LAN-Chat
Verfasst: 08.10.2013 12:53
von Moxl
ahh danke
