![]() |
Languages »
Java »
General
License: The Code Project Open License (CPOL)
Using Sockets in Java - ServerBy Marius Iulian MihailescuCreating a server program using Java |
Java
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
In this article, I will describe the steps to make a connection in Java using Sockets. Let's start to understand what is a communication created via TCP/IP... A communication link created via TCP/IP sockets is a connection-oriented link. This means that the connection between the server and client remains open throughout the duration of the dialogue between the two and is only broken (under normal circumstances) when one end of the dialogue formally terminates the exchanges (via an agreed protocol).
ServerSocket object:
ServerSocket mySock = new ServerSocket(1234);
Here the server will wait ("listen for") a connection from a client on port 1234.
Socket link = mySock.accept();
Here the server waits indefinitely("blocks") for a client to connect with the help of accept method of class ServerSocket, class that will return a Socket object when a connection is made.
getInputStream and getOuputStream of class Socket. These methods are used to get references to streams associated with the socket returned in step 2.Scanner object around the InputStream object, object that is returned by method getInputStream, in order to obtain string-oriented input, let's see how:
Scanner input = new Scanner(link.getInputStream());
At the same time, we can wrap a PrintWriter object around the OutputStream object returned by method getOutputStream. We supply the PrintWriter constructor with a second argument of true. This argument will cause the output buffer to be flushed for every call of println, let's see how:
PrintWriter output = new PrintWriter(link.getOutputStream(),true);
Scanner and PrintWriter objects, to send data and to receive is very straightforward. For this, we have to use nextLine method for receiving data and println to send data, let's see how:
output.println("Awaiting data...");
String input = input.nextLine();
link.close();
Look at this code :
public class TCPEchoServer
{
private static ServerSocket servSock;
private static final int PORT = 1234;
public static void main(String[] args)
{
System.out.println("Opening port...\n");
try
{
servSock = new ServerSocket(PORT); //Step 1.
}
catch(IOException ioEx)
{
System.out.println("Unable to attach to port!");
System.exit(1);
}
do
{
handleClient();
}
while (true);
}
private static void handleClient()
{
Socket link = null; //Step 2.
try
{
link = servSock.accept(); //Step 2.
Scanner input = new Scanner(link.getInputStream()); //Step 3.
PrintWriter output =
new PrintWriter(link.getOutputStream(),true); //Step 3.
int numMessages = 0;
String message = input.nextLine(); //Step 4.
while (!message.equals("***CLOSE***"))
{
System.out.println("Message received.");
numMessages++;
output.println("Message " +
numMessages + ": " + message); //Step 4.
message = input.nextLine();
}
output.println(numMessages + " messages received."); //Step 4.
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}
finally
{
try
{
System.out.println( "\n* Closing connection... *");
link.close(); //Step 5.
}
catch(IOException ioEx)
{
System.out.println("Unable to disconnect!");
System.exit(1);
}
}
}
}
This example represents the SERVER program. In the next article (JavaSocketsClient.aspx), I will describe the CLIENT program, which is almost the same.
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+PgUp/PgDown to switch pages.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 24 Mar 2008 Editor: Deeksha Shenoy |
Copyright 2008 by Marius Iulian Mihailescu Everything else Copyright © CodeProject, 1999-2010 Web09 | Advertise on the Code Project |