//修改yangkunlin的代码
服务器端:
客户端:
运行如下:[img]http://dl2.iteye.com/upload/attachment/0089/7207/43b46749-a43a-34ae-a95b-386da72b5459.png[/img]
服务器端:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server{
public static final int PORT=8888;
public static void main(String args[])throws Exception{
System.out.println("服务器正在等待连接中...");
Server server=new Server();
server.oper();
}
public void oper()throws Exception{
ServerSocket serverSocket=new ServerSocket(PORT);
boolean flag=true;
while(flag){
System.out.println("连接之后输入exit就退出服务器端");
Socket socket=serverSocket.accept();//进入阻塞状态,等待客户端的连接
ServerThread serverThread=new ServerThread(socket);
new Thread(serverThread).start();
String str=new BufferedReader(new InputStreamReader(System.in)).readLine();
if(str.equals("exit")){
socket.close();
flag=false;
}
}
}
};
class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket=socket;
}
public void run(){
try{
//读取客户端的数据
DataInputStream input=new DataInputStream(socket.getInputStream());
//向客户端发送的数据
DataOutputStream out=new DataOutputStream(socket.getOutputStream());
//读取客户端的数据
System.out.println("客户端传过来的数据:"+input.readUTF());
System.out.print("请输入:\t");
//发送键盘输入的一行
String s=new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(s);
input.close();
out.close();
}catch(Exception e){
System.out.println(e);
}
}
}
客户端:
import java.net.Socket;
import java.net.*;
import java.io.*;
public class Client{
public static final int PORT=8888;
public static final String IP="localhost";
public static void main(String args[])throws Exception{
System.out.println("客户端..");
System.out.println("当接收的\"bye\"的时候,客户端终止连接");
boolean flag=true;
Socket client=null;
while(flag){
client=new Socket(IP,PORT);
//读取服务器端数据
DataInputStream input=new DataInputStream(client.getInputStream());
//向服务器端端发送的数据
DataOutputStream out=new DataOutputStream(client.getOutputStream());
System.out.print("请输入:\t");
//从键盘接收数据
String s=new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(s);
//服务器端返回过来的数据
String recS=input.readUTF();
System.out.println("服务器端返回过来的数据:"+recS);
if("bye".equals(recS)){
System.out.println("客户端将关闭");
Thread.sleep(500);
flag=false;
}
}
client.close();
}
}
运行如下:[img]http://dl2.iteye.com/upload/attachment/0089/7207/43b46749-a43a-34ae-a95b-386da72b5459.png[/img]