18 Aralık 2012 Salı

A threaded server implementation

Hi, today I want to write about a server and a client program I developed under GNU/Linux [source]. And I will write a longer post about what I learned about server design later.

I started off to write a chat server and client but in the end I thought anything related to chat cannot be coded in C easily. I may use the code to make a chat server with C++ someday. Right now the server has a message log and all incoming messages are recorded there. A message coming from one client is sent to all other clients which are connected to the server. Each client records the messages coming from the server to its own message log. The server doesn't use select, poll or epoll. Instead it uses threads. I chose to assign new threads per connection to practice pthreads.

There are three topics I can write about the programs. The queue struct which works as a message buffer, the client application and the server.

12 Aralık 2012 Çarşamba

Bu haftasonu katılınası etkinlikler

Ne zamandır evde kod yazıyorum. Haliyle sıkılmaya başlamıştım ve sosyal etkinlikleri iple çeker olmuştum. Şansa bakın ki bu haftasonu üç etkinlik birden üst üste geldi. Fırsatım olsa (mesela gerçek hayatta clone() syscallu çağırabilsek) üçüne de katılmak isterdim ama maalesef yalnız birini seçmek zorundayım.

Hepsinin değerli etkinlikler olduğunu düşündüğümden burada biraz bahsetmek istiyorum. Bakarsınız ilerde blogun trafiği artar da hem etkinliklere hem de etkinliklerden haberdar olmayan insanlara faydam dokunur.

10 Aralık 2012 Pazartesi

Yeni yazılar yolda

Merhaba,

Üç haftadır yazmadım. Basit bir server ve client yazmaya çalışıyordum ama bu işler tahmin ettiğimden daha kapsamlıymış. Zaten geçen hafta da pek verimli çalışamadım. Ama sonuçları yarın yine GitHub'dan paylaşacağım.

Tabii digraph'ta olduğu gibi bununla ilgili de bir yazı yazacağım. Threadlerle ve server tasarımı hakkında bayağı bir şey görmüş oldum. Şimdi event handlerlar ve state machineler hakkında bir şeyler yapmayı düşünüyorum. Eğer bununla ilgili çalışmaya zaman bulursam amatör de olsa çok daha kapsamlı bir sunucu tasarımı yazı dizisi yazacağım. Notlarım var ama event handling ve multiplexing konularında elimde somut örnek yok. Kod yazmadan yazı yazmak istemiyorum.

Driver yazma ile ilgili iki yazım olacak. Onların da notları var, yazıya çevirmem gerekli. Bir de Gentoo altında sanal sunucu oluşturarak kernel test ortamı oluşturmayı anlatacağım. Xen 4.1'de bazı sorunlar çıkabiliyor çünkü. Xen 4.2'de sanırım yazıya filan gerek duymadan kolayca halledilebilecek bu işler, bakalım.

Özetle önümüzdeki iki hafta yeni yazılar gelecek.