一。客户端:Client.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws SocketException {
String readline = null;
BufferedReader standard_in = null; //用于标准输入,从键盘输入数据
BufferedReader socket_in = null; //套接字输入流,用来接受服务器发送过来的数字
PrintWriter socket_out = null; //套接字输出流,将“标准输入流”中的数据写到socket输出流,用来向服务器发送数据
try{
Socket socket = new Socket("127.0.0.1", 4700);//4700是随便起的端口号
try{
standard_in = new BufferedReader(new InputStreamReader(System.in));
socket_in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
socket_out = new PrintWriter(socket.getOutputStream());
readline = standard_in.readLine();
while(!readline.equalsIgnoreCase("bye")){
socket_out.println(readline);
socket_out.flush();
System.out.println("Client send data:\t"+readline);
System.out.println("Client accept data:\t"+socket_in.readLine());
readline = standard_in.readLine();
}
}catch(IOException E){
E.printStackTrace();
}
//close resource
standard_in.close();
socket_in.close();
socket_out.close();
socket.close();
}catch(UnknownHostException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
}
二。服务器端 Server.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
BufferedReader in = null;
BufferedReader sin = null;
PrintWriter out = null;
String line = "";
try{
serverSocket = new ServerSocket(4700);
}catch(IOException e){
e.printStackTrace();
}
try{
socket = serverSocket.accept();
}catch(IOException E){
System.out.println("can't connect the server");
E.printStackTrace();
}
try {
sin = new BufferedReader(new InputStreamReader(System.in));
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
//
System.out.println("the server accept data:\t"+in.readLine());
line = sin.readLine();
while(!line.equalsIgnoreCase("bye")){
out.println(line);
out.flush();
System.out.println("server send data:\t"+line);
System.out.println("server accept date:\t"+in.readLine());
line = sin.readLine();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三。测试
- 客户端
- 服务器端
-
具体操作:客户端发送一条数据,服务器端就接受数据。同理,服务器端发送一条数据,客户端就接收数据。但是,这个只能客户端发送一次后必须切换让服务器发送数据,还不能连续发送多条数据。