服务端:
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerSocketTest {
public static void main(String[] args) throws Exception {
ServerSocket s=new ServerSocket(9998);
System.out.println("我在等待有人连接");
Socket so=s.accept();
System.out.println("有人连接了我:"+so.getInetAddress());
OutputStream os=so.getOutputStream();
PrintStream out=new PrintStream(os);
Scanner key=new Scanner(System.in);
ReadFormClient r=new ReadFormClient(so);
r.start();
while (true) {
String keyreply=key.nextLine();
out.println(keyreply);
out.flush();
}
}
}
//此线程负责从客户端读取数据
class ReadFormClient extends Thread{
Socket so;
BufferedReader in;
public ReadFormClient(Socket so) throws IOException {
this.so=so;
InputStream ins=so.getInputStream();
Reader r=new InputStreamReader(ins);
in=new BufferedReader(r);
}
public void run() {
while(true) {
try {
String li=in.readLine();
System.out.println("客户端说:"+li);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
客户端:
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.net.Socket;
import java.util.Scanner;
public class ClientTest {
public static void main(String[] args) throws Exception{
Socket s=new Socket("localhost", 9998);
System.out.println("我是客户端:"+s.getInetAddress());
OutputStream os=s.getOutputStream();
PrintStream out=new PrintStream(os);
Scanner key=new Scanner(System.in);
//启用多线程读取服务器发的消息
ReadFromServer r=new ReadFromServer(s);
r.start();
while (true) {
String keyreply=key.nextLine();
out.println(keyreply);
out.flush();
}
}
}
class ReadFromServer extends Thread{
Socket so;
BufferedReader in;
public ReadFromServer(Socket so) throws IOException {
this.so = so;
InputStream ins=so.getInputStream();
Reader r=new InputStreamReader(ins);
in=new BufferedReader(r);
}
public void run() {
while (true) {
try {
String line=in.readLine();
System.out.println("服务器端说:"+line);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}