Java中的网络通信是通过Socket实现的,Socket分为ServerSocket和Socket两大类,ServerSocket用于服务端,可以通过accept方法监听请求,监听到请求后返回Socket,Socket用于具体完成数据传输,客户端直接使用Socket发起请求并传输数据
/**
* 客户端-套接字
* @author Administrator
* */
public class Client {
public static void main(String args[]) {
String msg = "Client Data";
try {
//创建一个Socket,跟本机的8080端口连接
Socket socket = new Socket("127.0.0.1",8080);
//使用Socket创建PrintWriter和BufferedReader进行读写数据
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//发送数据
pw.println(msg);
pw.flush();
//接收数据
String line = is.readLine();
System.out.println("received from server: " + line);
//关闭资源
pw.close();
is.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 服务端-套接字
* @author Administrator
* */
public class Server {
public static void main(String args[]) {
try {
//创建一个ServerSocket监听8080端口
ServerSocket server = new ServerSocket(8080);
//等待请求
Socket socket = server.accept();
//接收到请求后使用socket进行通信,创建BufferedReader用于读取数据,
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = is.readLine();
System.out.println("received from client: " + line);
//创建PrintWriter,用于发送数据
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println("received data: " + line);
pw.flush();
//关闭资源
pw.close();
is.close();
socket.close();
server.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这里因为是自己的电脑既是服务器又是客户端,先运行Server程序,再运行Client程序。