It can be easy! I made this program (server side):
import java.net.ServerSocket; import java.net.Socket; import java.io.DataInputStream; import java.io.DataOutputStream; public class Host{ public static void main(String[] args) throws Exception{ while(true){ ServerSocket ss = new ServerSocket(1300); Socket s = ss.accept(); DataInputStream din = new DataInputStream(s.getInputStream()); String msgin = din.readUTF(); System.out.println(msgin); ss.close(); s.close(); din.close(); } } }
Client side:
import java.net.Socket; import java.io.DataInputStream; import java.io.DataOutputStream; public class Client{ public static void main(String[] args) throws Exception{ while(true){ Socket s = new Socket("localhost", 1300); DataOutputStream dout = new DataOutputStream(s.getOutputStream()); dout.writeUTF("hello"); s.close(); dout.close(); } } }
This works, you can declare many sockets with the same ServerSocket, so, for example, this also works:
ServerSocket ss = new ServerSocket(1300); Socket a = ss.accept(); Socket b = ss.accept(); Socket c = ss.accept();
and you have 3 sockets ... Remember: java waits for the client to communicate when you declare a Socket! Code:
Customer:
import java.net.Socket; public class client { public static void main(String[] args) throws Exception{ Socket a = new Socket("localhost", 1300); Thread.sleep(3000); Socket b = new Socket("localhost", 1300); Thread.sleep(3000); Socket c = new Socket("localhost", 1300); Thread.sleep(3000); a.close(); b.close(); c.close(); } }
Server:
import java.net.ServerSocket; import java.net.Socket; public class server { public static void main(String[] args) throws Exception{ ServerSocket ss = new ServerSocket(1300); System.err.println("Listening..."); Socket a = ss.accept(); System.err.println("1"); Socket b = ss.accept(); System.err.println("2"); Socket c = ss.accept(); System.err.println("3"); } }
source share