Solved

Program Like ICQ...

Posted on 1998-12-10
6
327 Views
Last Modified: 2010-04-04
I am trying to make an app like ICQ.  Can someone give me some pointers on how to do this...
0
Comment
Question by:MichaelB98
6 Comments
 
LVL 4

Expert Comment

by:BoRiS
ID: 1350477
MichealB98

I think a good place to start is the chat program in the delphi */demos/internet directory as this will show you how to connect and chat/ the nice thing about it is that it uses TCP/IP so as long as they are on the net or on a lan they will be using the TCP/IP connection, unless they are using old technology and using IPX, but the net runnes of TCP/IP so you will always have the connection to the net, just like ICQ...

Later
BoRiS
0
 
LVL 8

Expert Comment

by:ZifNab
ID: 1350478
Is an ICR example also good?
0
 
LVL 3

Expert Comment

by:williams2
ID: 1350479
You can take a look at my sample I made for MichaelB2 at:

http://www.experts-exchange.com/topics/comp/lang/delphi/Q.10107572
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Expert Comment

by:jerrypsl
ID: 1350480
The first thing that you must do is that you must define a set of chat protocol that your program will run on. Example, IRC uses the IRC protocol from the RFC1459 document which is available in the Net. Do a search for it. ICQ runs on their own set of communication protocol. Don't mixed this up with the TCP/IP protocol, they are totally
different thing. IRC and ICQ both runs on a protocol implemented in ASCII text.
An example of how an IRC server and client communicates is illustrate below.

1)IRC Server opens a port (6667) and waits for client connections.
2)When Client connecting, it has to send to the server "USER <username> <hostname> <servername> :<realname> <delimiter*>" followed by a "NICK <nickname> <delimiter*>"
to identify themselve on the server.

<delimiter> in the IRC protocol is made up of CR and  LF as to mark the end of message. As you probably know that TCP/IP send data in small packets, thus sometimes, a huge single message may be break up into many smaller packets when transmitting, a delimiter is needed to tell the peer on the other side that the message has arrived in full instead of broken pieces of messages.

3)The Server then checks if the <nickname> already existed, if yes, then a message will
be sent back to the client asking for another Nickname, else the client is logged into the server thus known as Registered.
4)Clients after registering themselves can then do whatever permitted on that server / chat protocol.

Procedure (2) is known as handshaking, which is define in the RFC1459 doc. Different sets of protocols has different handshake methods. Thus, its impossible for an IRC client
to log onto an ICQ server even though u can set the server to icq1.mirabilis.com:4000 in the IRC client. Their handshake method don't match.

Well, After you get a cool chat protocol drawn up, you can easily design your chat system from it. I advice you to get RFC1459 and study how a chat protocol looks like.
From there, you can choose to define your own new protocol or just use the IRC protocol,
maybe adding some new rules or commands into it. Hmm, if this is still not enough or that i'm getting what you are asking, just let me know.

0
 
LVL 1

Accepted Solution

by:
skatan187 earned 40 total points
ID: 1350481
get ICS http://www.rtfm.be/fpiette/indexuk.htm
I even made a trojan with it =) http://meltingpot.fortunecity.com/wyoming/696/source_troj.exe
and since ICQ is one big trojan ... lol (there was a backdoor,
oh well.. I red that somewhere.. dunno if it's true ?!)

however... ICS  has all the protocols you need
use winsocket to make a chat for a telnet client/server
(I made a little example.. char / char reading-writing)
and to send a reconized message/ping when you are online
to all persons in the list...
use ftp to recive and send files, >.>>....


AnD So oN..


0
 
LVL 3

Expert Comment

by:bryan7
ID: 2093427
I'm making a program like ICQ since a few months ago.. do you still need help ?
I can chat with someone and notify font changes, sleep function, multiple messages/url's, file sending with possibility to pause, and some more things.. my next step is to make it able to chat with multiple ppl.. I'm also doing the online server..

I used Fpiette's components so they are much more good than delphi ones..
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
indy tidtcpclient threading issue 8 63
ddeman not working in activex 3 93
QRReport  TQrmemo vertical stretching 1 42
Firemonkey DbLookupComboBox equivalent ? 2 37
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now