服务器端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(8889);
Scanner sc = new Scanner(System.in);
Socket s = ss.accept();
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
Thread tr = new Thread(new Read(s,"客户端"));
Thread tw = new Thread(new Write(s,"客户端"));
tr.start();
tw.start();
if(s.isClosed()) {
ss.close();
}
}
}
客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s = new Socket("10.25.34.2", 8889);
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
Thread tr = new Thread(new Read(s,"服务器"));
Thread tw = new Thread(new Write(s,"服务器"));
tr.start();
tw.start();
}
}
读
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class Read implements Runnable{
private Socket s;
private String name;
public Read(Socket s,String name) {
super();
this.s = s;
this.name = name;
}
@Override
public void run() {
// TODO Auto-generated method stub
String cmes = null;
InputStream is =null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
is = s.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
System.out.println("你已上线,"+name+"正在对你输入...");
while (true) {
cmes = br.readLine();
if("88".equals(cmes)) {
break;
}
System.out.println(name+"对你说:" + cmes);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
isr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
写
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class Write implements Runnable{
private Socket s;
private String name;
public Write(Socket s,String name) {
super();
this.s = s;
this.name = name;
}
@Override
public void run() {
// TODO Auto-generated method stub
String mes = null;
Scanner sc = new Scanner(System.in);
OutputStream os = null;
OutputStreamWriter osw = null;
try {
os = s.getOutputStream();
osw = new OutputStreamWriter(os);
while (true) {
mes = sc.next();
try {
osw.write(mes + "\n");
osw.flush();
if("88".equals(mes)) {
break;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("你对"+name+"说:"+mes);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
sc.close();
try {
osw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}