This article illustrates the Java socket programming to achieve a simple greeting service detailed code for your reference, the specific contents are as follows
Server side:
Implement one of the simplest Hello services, print out the client IP address to the console, send a string of characters (Hello, Java Socket) to any connected client, and then close the connection to the client. Wait for the next client connection request to arrive.
Client:
Implement one of the simplest socket connections to the Hello server side, receive the byte data sent over the server side to print and output the content to the console.
Key Tips:
Because Java provides a lot of input and output flow APIs, causing many beginners to contact Java socket programming, due to the lack of understanding of the nature of the network byte communication, directly a readline () to accept the socket byte stream. This is one of the most common errors, however, because the sending party does not send the/r/n, causing the data to be unreadable. Other common errors include the absence of initialization of the receive buffer causing character garbled, not being reassembled according to the read in to the byte number, resulting in an exception to the data received. So the code shows what is called byte-Sending and bytes-accepted, which is a very important concept and principle in network programming. Let those input stream println () method and output stream ReadLine () method go to Hell, not bad, but I suggest you not to use, because those will hinder your network programming the essence of understanding and understanding. I would also like to make a special note: sometimes flush () is really not necessary unless you use a buffered input and output stream to read and write bytes.
Server-side code:
Package com.gloomyfish.socket.tutorial.two;
Import Java.io.DataOutputStream;
Import java.io.IOException;
Import Java.net.ServerSocket;
Import Java.net.Socket;
public class HelloService extends Thread {private ServerSocket serversocket;
public HelloService (int port) throws IOException {ServerSocket = new ServerSocket (port); public void Run () {try {while (true) {System.out.println (' Waiting for client ' on PO
RT "+ Serversocket.getlocalport ()); Socket client = Serversocket.accept (); Blocked & Waiting for income socket SYSTEM.OUT.PRINTLN ("Just connected to" + client.getremotesocketaddres
s ());
DataOutputStream dos = new DataOutputStream (Client.getoutputstream ());
byte[] Hello = "Hello, Java Socket". GetBytes ();
Dos.write (Hello, 0, hello.length);
Dos.close ();
Client.close ();
} catch (Exception e) {e.printstacktrace (); }} PUBlic static void Main (string[] args) {try {HelloService service = new HelloService (9999);
Service.start ();
catch (IOException e) {e.printstacktrace ();
}
}
}
The
Server listens on port 9999 and waits for a connection, using Java thread to implement server-side startup.
Client code is as follows:
Package com.gloomyfish.socket.tutorial.two;
Import Java.io.DataInputStream;
Import java.io.IOException;
Import java.net.InetSocketAddress;
Import Java.net.Socket;
Import java.net.SocketAddress;
public class Helloclient {private int clientnumber;
Private socketaddress address;
Public helloclient (int clientnum) {clientnumber = Clientnum; public void Setupclients (String serverhostname, int port) throws IOException {address = new Inetsocketaddre
SS (Serverhostname, Port);
for (int i=0; i<clientnumber; i++) {System.out.println ();
System.out.println ("Start client No." + (i+1));
Socket socket = new socket ();
Socket.connect (address);
DataInputStream BufferedReader = new DataInputStream (Socket.getinputstream ());
byte[] Cbuff = new byte[256];
char[] Charbuff = new char[256];
int size = 0; while (size = Bufferedreader.read (cbuff)) > 0) {convertbytetochar (Cbuff, Charbuff, size);
System.out.println (Charbuff);
} bufferedreader.close ();
Socket.close (); } private void Convertbytetochar (byte[] cbuff, char[] charbuff, int size) {for (int i=0; i<charbuff.le Ngth;
i++) {if (I < size) {Charbuff[i] = (char) cbuff[i];
} else {charbuff[i] = '; }} public static void Main (string[] args) {try {helloclient client = new Helloclient (1
0);
Client.setupclients ("localhost", 9999);
catch (IOException e) {e.printstacktrace ();
}
}
}
10 clients are started to connect to the server side, and the client closes the connection after receiving the server-side greeting.
Special Note: Be sure to initialize buffer Charbuff
Program Run Result:
The above is the entire content of this article, I hope to help you learn.