Created
January 20, 2016 15:25
-
-
Save anonymous/dd23c9027242f6a5b13c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package stackoverflow; | |
import java.io.ObjectInputStream; | |
import java.io.ObjectOutputStream; | |
import java.net.*; | |
import java.util.Scanner; | |
public class Sockets { | |
public static void main(String... args) throws Exception { | |
ServerSocket server = new ServerSocket(); | |
server.bind(new InetSocketAddress("localhost", 0)); | |
Thread serverThread = new Thread(() -> { | |
while (!Thread.currentThread().isInterrupted()) { | |
try { | |
Socket socket = server.accept(); | |
ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); | |
String msg = (String) in.readObject(); | |
System.out.println("Server here: read message > " + msg); | |
String ack = "ok"; | |
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); | |
out.writeObject(ack); | |
System.out.println("Server here: written acknowledge > " + ack); | |
socket.close(); | |
} catch (Exception e) { | |
System.err.println("Error while processing request"); | |
e.printStackTrace(); | |
} | |
} | |
}); | |
serverThread.setName("server-accepting-thread"); | |
serverThread.setDaemon(true); | |
serverThread.start(); | |
Scanner shell = new Scanner(System.in); | |
while (true) { | |
System.out.println("Write your message and press 'Enter'. Type 'quit' to terminate the program"); | |
try { | |
String request = shell.nextLine(); | |
if (request.equals("quit")) { | |
break; | |
} | |
Socket socket = new Socket("localhost", server.getLocalPort()); | |
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); | |
System.out.println("Client here: sending request > " + request); | |
out.writeObject(request); | |
ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); | |
String response = (String) in.readObject(); | |
System.out.println("Client here: server responded > " + response); | |
socket.close(); | |
} catch (Exception e) { | |
System.err.println("Error while sending request"); | |
e.printStackTrace(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you!