Skip to content

Instantly share code, notes, and snippets.

@kimhu
Last active August 29, 2015 14:02
Show Gist options
  • Save kimhu/f6486d335063bd288cb5 to your computer and use it in GitHub Desktop.
Save kimhu/f6486d335063bd288cb5 to your computer and use it in GitHub Desktop.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testfile;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author kim_hu
*/
public class SocketClientThread {
public void service() {
//Socket socket = new Socket("localhost", 10000);
Socket socket;
try {
socket = new Socket("localhost", 80);
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new Thread(new HandleRead(reader, socket)).start();
new Thread(new HandleWrite(out, socket)).start();
} catch (UnknownHostException ex) {
Logger.getLogger(SocketClientThread.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(SocketClientThread.class.getName()).log(Level.SEVERE, null, ex);
}
//BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
public static void main(String[] args) throws IOException {
SocketClientThread socket = new SocketClientThread();
socket.service();
}
class HandleRead implements Runnable {
private BufferedReader reader;
private Socket socket;
public HandleRead(BufferedReader reader, Socket socket) {
this.reader = reader;
this.socket = socket;
}
private void handleRead() {
try {
while (true) {
String content = reader.readLine();
System.out.println(content);
if (content.equals("eof")) {
break;
}
}
} catch (IOException ex) {
Logger.getLogger(SocketClientThread.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception ex) {
Logger.getLogger(SocketClientThread.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
reader.close();
socket.close();
} catch (IOException ex) {
Logger.getLogger(SocketClientThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@Override
public void run() {
handleRead();
}
}
class HandleWrite implements Runnable {
private PrintWriter out;
private Socket socket;
public HandleWrite(PrintWriter out, Socket socket) {
this.out = out;
this.socket = socket;
}
private void handleWrite() {
while (true) {
Scanner sc = new Scanner(System.in);
String content = sc.nextLine();
out.println(content);
out.flush();
if (content.equals("bye")) {
break;
}
}
out.close();
try {
socket.close();
} catch (IOException ex) {
Logger.getLogger(SocketClientThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void run() {
handleWrite();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment