Sockets and You
Have you ever wanted to create a chat program in Java? Well now you can with the one and only Socket!
AI
AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Source Code
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"MS Mincho";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-alt:"\FF2D\FF33 \660E\671D";
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:"\@MS Mincho";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;
text-underline:single;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
<div class=Section1>
<p class=MsoNormal>It seems we meet again. Or for the first time perhaps?
Either way, I’ve come to enjoy your company. So lets talk over some Java. Remember
to include the java.net and java.io packages!</p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoNormal>You want to learn about sockets? Here are there basic steps
to help that go throw the connection process:</p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>1) Server (</span><span
style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-fareast-font-family:
"MS Mincho";color:red'>Tim</span><span style='mso-fareast-font-family:"MS Mincho"'>)
- Creates a new socket listening on port 4444. <o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>2)Client (</span><span
style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-fareast-font-family:
"MS Mincho";color:red'>Chris</span><span style='mso-fareast-font-family:"MS Mincho"'>)
– Creates a new socket connecting to </span><span style='font-size:10.0pt;
mso-bidi-font-size:12.0pt;font-family:Arial;mso-fareast-font-family:"MS Mincho";
color:red'>Tim</span><span style='mso-fareast-font-family:"MS Mincho"'> on port
4444.<o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>3) Data
transfer begins.<o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal>Initializing a client socket looks like this.</p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'>Socket <span style='color:navy'>clientSocket</span>
= null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:navy'>clientSocket</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new Socket(<span
style='color:red'>"Tim"</span>,<span style='color:#FFCC00'> </span>4444);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-family:Arial'><span style="mso-spacerun:
yes"> </span><o:p></o:p></span></p>
<p class=MsoNormal>This socket is connecting to a computer called <span
style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-fareast-font-family:
"MS Mincho";color:red'>Tim </span><span style='mso-fareast-font-family:"MS Mincho"'>on
port 4444. Now, </span><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
font-family:Arial;mso-fareast-font-family:"MS Mincho";color:red'>Tim </span><span
style='mso-fareast-font-family:"MS Mincho"'>can be either the name of a
computer on a network or an IP address. But before a client connects to a
server socket, there has to <b>be </b>a server socket.<o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'>Socket <span style='color:navy'>serverSocket</span>
= null;<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:.5in'><span style='font-size:10.0pt;
mso-bidi-font-size:12.0pt;font-family:Arial;mso-fareast-font-family:"MS Mincho";
color:navy'>serverSocket</span><span style='font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new Socket(4444);
<span style='color:#00CC00'>//Notice no user to connect to this time.</span><o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:.5in'><span style='font-size:10.0pt;
mso-bidi-font-size:12.0pt;font-family:Arial;mso-fareast-font-family:"MS Mincho";
color:navy'>serverSocket</span><span style='font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:Arial;mso-fareast-font-family:"MS Mincho"'>.accept(); <span
style='color:#00CC00'>//Accept a client.<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
font-family:Arial;mso-fareast-font-family:"MS Mincho";color:#00CC00'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>Not too
hard is it? Now lets explain step three: Data Transfer.<o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>From the
socket you must receive input and you must send output. Clear? Good. To do this
you must declare a <span style='color:purple'>PrintWriter</span><span
style='color:#993366'> </span>for output and a <span style='color:purple'>BufferedReader
</span>for input. The following good is used for both a client and a server
socket. For the sake of simplicity I will use a client socket.<o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:purple'>PrintWriter</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> <span
style='color:#CC0000'>out</span> = null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:purple'>BufferedReader</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> <span
style='color:green'>in</span> = null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'>Socket <span style='color:navy'>clientSocket</span>
= null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:navy'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:navy'>clientSocket</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new Socket(<span
style='color:red'>"Tim"</span>,<span style='color:#FFCC00'> </span>4444);<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:#CC0000'>out</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new <span
style='color:#993366'>PrintWriter</span>(<span style='color:navy'>clientSocket</span>.getOutputStream(),
true); <span style='color:#00CC00'>//get the socket’s ouput<o:p></o:p></span></span></p>
<p class=MsoPlainText style='margin-left:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:green'>in</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new <span
style='color:#993366'>BufferedReader</span>( new inputStreamReader( <span
style='color:navy'>clientSocket</span>.getInputStream() ) ); <span
style='color:#00CC00'>//get the socket’s input<o:p></o:p></span></span></p>
<p class=MsoPlainText style='margin-left:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho"'>Looking
back, I think I overdid the color. Oh well. All you really need to look at are
the last two lines. The </span><span style='font-family:Arial;mso-fareast-font-family:
"MS Mincho";color:purple'>PrintWriter</span><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'> <span style='color:#CC0000'>out </span></span><span
style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman";
mso-fareast-font-family:"MS Mincho"'>will be the new front door for the
socket’s output. Calling </span><span style='font-family:Arial;mso-fareast-font-family:
"MS Mincho";color:#CC0000'>out</span><span style='font-family:Arial;mso-fareast-font-family:
"MS Mincho"'>.println(“Hello”) </span><span style='font-size:12.0pt;mso-bidi-font-size:
10.0pt;font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho"'>would
send the string </span><span style='font-family:Arial;mso-fareast-font-family:
"MS Mincho"'>hello</span><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;
font-family:Arial;mso-fareast-font-family:"MS Mincho"'> </span><span
style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman";
mso-fareast-font-family:"MS Mincho"'>to the server. Not too hard. I am going to
finish this showing you how to use a loop to receive information. <o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:purple'>PrintWriter</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> <span
style='color:#CC0000'>out</span> = null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:purple'>BufferedReader</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> <span
style='color:green'>in</span> = null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'>Socket <span style='color:navy'>clientSocket</span>
= null;<o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'>String fromServer;<br>
<![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:navy'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:navy'>clientSocket</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new Socket(<span
style='color:red'>"Tim"</span>,<span style='color:#FFCC00'> </span>4444);<o:p></o:p></span></p>
<p class=MsoPlainText style='margin-left:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:#CC0000'>out</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new <span
style='color:#993366'>PrintWriter</span>(<span style='color:navy'>clientSocket</span>.getOutputStream(),
true); <o:p></o:p></span></p>
<p class=MsoPlainText style='margin-left:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:green'>in</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'> = new <span
style='color:#993366'>BufferedReader</span>(new inputStreamReader( <span
style='color:navy'>clientSocket</span>.getInputStream() ) );<o:p></o:p></span></p>
<p class=MsoPlainText style='margin-left:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoPlainText style='text-indent:.5in'><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho"'>while ((fromServer = <span
style='color:green'>in</span>.readLine()) != null) { <span style='color:#00CC00'>//Loop
while we are still getting messages</span><br>
<span style="mso-spacerun:
yes"> </span>System.out.println("Server: " + fromServer); <span
style='color:#00CC00'>//Display message we got</span><br>
<span
style="mso-spacerun: yes"> </span><br>
<span style="mso-spacerun:
yes"> </span>}<o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:Arial;mso-fareast-font-family:
"MS Mincho"'><span style='mso-tab-count:1'> </span><o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:Arial;mso-fareast-font-family:
"MS Mincho"'><span style='mso-tab-count:1'> </span><span
style='color:#CC0000'>out</span></span><span style='mso-fareast-font-family:
"MS Mincho"'>.close();<br>
<span style="mso-spacerun: yes"> </span></span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho";color:green'>in</span><span
style='mso-fareast-font-family:"MS Mincho"'>.close();<br>
<span
style="mso-spacerun: yes"> </span></span><span style='font-family:Arial;
mso-fareast-font-family:"MS Mincho";color:navy'>clientSocket</span><span
style='mso-fareast-font-family:"MS Mincho"'>.close();</span><span
style='font-family:Arial;mso-fareast-font-family:"MS Mincho"'><br>
<![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-bidi-font-size:10.0pt;mso-fareast-font-family:
"MS Mincho"'>I know right now some people aren’t going to understand this
article. If you read it and don’t know how to make a chat program then you need
to read some more tutorials. I suggest going to <a href="http://java.sun.com/">http://java.sun.com/</a>
for more help. Email me with feedback type stuff – <a href="mailto:tim@bbs-la.com">Tim Fischer</a><o:p></o:p></span></p>
<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:.5in'><span style='color:#339966'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
</div>
Upload
Original Comments (3)
Recovered from Wayback Machine