Merhaba arkadaslar bugun socket uzerinden bir chat programi yazarsak onu nasil daha iyi ozelikler ekleyebiliriz(nickleri ayirt etme,mesajlari sifreleme vb) gibi seyleri hangi yontem ile yapabilirz onu gosterecegim cok buyuk bir yazi olmayacak.
Oncelikle bir chat scripti input tan aldigi veriyi socket teki diger kisilere aktariyor diyelim bekli biz gonderen kisinin nicinin de olmasini istiyorsak ne yapmaliyiz? Eskiden benim yaptigim bir yontem vardi soyle
Ayni sekilde alici tarafi ise bu mesaji soyle aliyodu
ama bu yontemin pekde kulanisli olmadigina karar verdim.Cunku eger mesajda '~' isaretten bir tane daha varsa programin isleyisi bozuluyordu. rsplit ile halledebilirdim ama baska yontemler denemeye karar verdim.
Daha sonra 'json' modulunu buldum. Bu modul, farkli veri tipindeki ogeleri string degerine ceviriyordu
Boylelikle socket ten rahatlikla gonderebiliyordum. Soyle yaptim
alici ise bunu boyle alacakti
boylelikle hem daha guvenli hemde daha hatasiz bir veri aktarimi yaptik bu sozluk icine daha farkli seyler de ekleyebilirsin mesela sifreleme anahtari veya saat degerini tasiyan bir string gibi.
Oncelikle bir chat scripti input tan aldigi veriyi socket teki diger kisilere aktariyor diyelim bekli biz gonderen kisinin nicinin de olmasini istiyorsak ne yapmaliyiz? Eskiden benim yaptigim bir yontem vardi soyle
Kod:
nick='easyly'
mesaj=raw_input('--> ')
socket.send(nick+'~'+mesaj)
Ayni sekilde alici tarafi ise bu mesaji soyle aliyodu
Kod:
gelen=c.recv(1024)
gelen=gelen.split('~') #~ karakrerden sonra string i ikiye boluyor
nick=gelen[0] #boyleikle
mesaj=gelen[1] #mesaj ve nick i ayirabiliyordum
print nick+'--> '+mesaj
ama bu yontemin pekde kulanisli olmadigina karar verdim.Cunku eger mesajda '~' isaretten bir tane daha varsa programin isleyisi bozuluyordu. rsplit ile halledebilirdim ama baska yontemler denemeye karar verdim.
Daha sonra 'json' modulunu buldum. Bu modul, farkli veri tipindeki ogeleri string degerine ceviriyordu
Boylelikle socket ten rahatlikla gonderebiliyordum. Soyle yaptim
Kod:
import json
nick='easyly'
mesaj=raw_input('--> ')
gonderilecek={'nick':'nick,
'mesaj':mesaj} ##Bir Sozluk olusturduk
gonderilecek=json.dumps(gonderilecek) ## String e cevirdik
socket.send(gonderilecek)
alici ise bunu boyle alacakti
Kod:
import json
gelen=c.recv(1024)
gelen=json.loads(gelen) ##Stringi tekrar sozluk tipine cevirdik
nick=gelen['nick']
mesaj=gelen['mesaj']
print(nick+'--> '+mesaj)
boylelikle hem daha guvenli hemde daha hatasiz bir veri aktarimi yaptik bu sozluk icine daha farkli seyler de ekleyebilirsin mesela sifreleme anahtari veya saat degerini tasiyan bir string gibi.
