创建一个线程(用来读取Socket里面的数据)
public class SoketRead extends Thread{
//声明一个socket
private Socket s;
//运行读取soket数据的方法
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
read();
}
}
//读取soket里面的数据
public void read(){
try {
//获取socket的输入流
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
//读取socket输入流里面的数据并打印
System.out.println(br.readLine());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//通过构造函数实例化socket
public SoketRead(Socket s) {
super();
this.s = s;
}
}
在创建一个线程(用来写入数据到socket里面)
public class SoketWrite extends Thread{
//声明一个soket
private Socket s;
//用来跑写数据到soket里面的线程
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
//调用写入方法
write();
}
}
//对soket进行写入数据的操作
public void write(){
try {
//获取soket的输出流
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//创建一个缓冲流用来读取控制台数据
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入:");
//读取控制台数据
String str=input.readLine();
//写入soket的输出流里面
bw.write(str);
//加换行
bw.newLine();
//刷新缓冲
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//通过构造函数实例化socket
public SoketWrite(Socket s) {
super();
this.s = s;
}
}
服务端
public class Server {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//创建一个服务器端socket(监听端口)
ServerSocket server=new ServerSocket(9999);
System.out.println("监听中。。。。。。");
//开始监听等待客户端接入来获取socket
Socket s=server.accept();
//获取socket输入输出流
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//通过输出流把数据写入socket
bw.write("连接成功!");
//添加一个换行
bw.newLine();
//刷新缓冲
bw.flush();
//把soket放到线程里面进行写入数据
SoketWrite r=new SoketWrite(s);
//把soket放到线程里面进行读取数据
SoketRead w=new SoketRead(s);
//开启线程
r.start();
w.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//创建一个客户端socket(服务器端地址,服务端端口)
Socket s = new Socket("127.0.0.1",9999);
//获取socket输入输出流
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//获取一个缓冲流,用来读取控制台数据
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
//读取socket输入流里面的数据并打印到控制台
System.out.println(br.readLine());
//把socket放到线程里面去进行读写
SoketWrite r=new SoketWrite(s);
SoketRead w=new SoketRead(s);
//开启线程
r.start();
w.start();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}