Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What parts/modules of python do I need to learn to make a Instant Messenger type program, I understand some have video chat functions and all that and I'm not referring to the advance stuff like that..I assume I need to learn the networking stuff but actually what parts of it, what topics? sockets? pipes? idk?

and what about the login process??

any book recommendations of the pending answers?

share|improve this question
7  
From the content of your question, I would say - aim lower. – talonx Jun 11 '11 at 4:32
2  
I'm not sure why this is getting downvotes. I kind of think this is a misguided question, but I wouldn't call it a bad question. – jhocking Jun 16 '11 at 20:27
1  
I would call it a bad question simply for the fact it implies a lack of forethought or research on the topic. A down vote on stack exchange isn't anything someone should lose sleep over, its simply a nudge "hey ask a more pointed question after you have researched a topic". – hockfan86 Jun 17 '11 at 3:29

4 Answers

up vote 3 down vote accepted

You need to understand whatever socket library (or equivalent library) is provided in Python. You can actually get a lot done being ignorant of networking, but you may make key mistakes without a deeper understanding.

This is more than just coding. You have to decide what kind of server architecture you want. Will you have a big central server? Peer to peer(s)? Maybe one user who elects to act as a "server"? Will it work in a web style "get request only" fashion, or will the server take the initiative and push messages down?

If you have a login process you will need a central server for logins. However you could still have a peer to peer for the actual chat in theory.

share|improve this answer

Your question as-is doesn't make any sense. Specifically the "in Python" part is asking exactly the wrong question. This is (very) roughly analogous to asking "what do I need to learn about hammers to build an armoire?" A hammer is a tool you may use in building an armoire. Python is a tool you may use in building an instant messenger.

So:

  • You need to learn programming, not programming in Python.
  • You need to learn network programming, not network programming in Python.
  • You need to learn client-server models, not client-server models in Python.
  • You need to learn peer-to-peer models, not peer-to-peer models in Python.
  • You need to learn credential verification (login), not credential verification in Python.
  • You need to learn ...

You get the picture. Oh, and while you're at it:

  • You need to learn Python.
share|improve this answer

There are open standards for chat already around, so it might be good to start with those, and even the various implementations (many of which are also available in python).

the two that instantly come to mind are IRC and XMPP also known as Jabber.

A simple web search will turn up many implementations of both that are open-source that you can look at and play with.

share|improve this answer

Let's say you know Python, then you probably need to use something like Twisted - but as has been mentioned earlier, you're approaching the problem back to front. Python may not be the ideal tool for this particular job. I would suggest taking a look at some of the functional programming languages, or you could take a look at NodeJS. They are designed to deal with concurrency and events, and as such are more suited to the task you described.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.