SERVER:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
/**
* @author zzsu
*
*/
public class MultiConServer {
private Socket socket;
private ServerSocket ss;
public static final int PORL = 8081;
public MultiConServer() throws IOException, InterruptedException{
System.out.println("start service at " + new Date().toString());
try {
ss = new ServerSocket(PORL);
while(true){
socket = ss.accept();
System.out.println("socket:" + socket);
new ServerOneCon(socket);
}
} catch (IOException e) {
socket.close();
}finally{
ss.close();
}
}
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Auto-generated method stub
new MultiConServer();
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;
/**
* @author zzsu
*
*/
public class ServerOneCon extends Thread {
private Socket socket = null;
private BufferedReader br = null;
private PrintWriter pw = null;
public ServerOneCon(Socket s) throws InterruptedException {
socket = s;
try {
br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())),true);
start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
while (true) {
String str;
try {
str = br.readLine();
if ("END".equals(str)) {
br.close();
pw.close();
socket.close();
System.out.println("SERVER END");
break;
}
System.out.println("Client Socket Message: " + str + " | " + new Date());
pw.println("Message Received");
pw.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
try {
br.close();
socket.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
pw.close();
e.printStackTrace();
}
}
}
}
Client
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
*
*/
/**
* @author zzsu
*
*/
public class Client {
private Socket socket;
private BufferedReader br;
private PrintWriter pw;
public Client() {
try {
socket = new Socket("127.0.0.1", MultiConServer.PORL);
System.out.println("Socket=" + socket);
br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())));
while (true) {
BufferedReader line = new BufferedReader(new InputStreamReader(
System.in));
String str = line.readLine();
pw.println(str);
pw.flush();
if ("END".equals(str)) {
break;
}
System.out.println(br.readLine());
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println("close......");
try {
br.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pw.close();
}
}
/**
* @param args
*/
public static void main(String[] args) {
new Client();
}
}
先运行server 在运行client。输入数据,若输入END便结束。