共计 2522 个字符,预计需要花费 7 分钟才能阅读完成。
在 Java 开发中,网络编程是非常重要的一部分。本文将介绍 Java 网络编程中比较常用的技术:Socket 编程、HTTP 协议、TCP/IP 协议等,并结合具体实例进行说明。
一、Socket 编程
Socket 编程是一种基于网络的通信方式,它允许应用程序通过网络发送和接收数据。在 Java 中,我们可以使用 Socket 类来创建一个 Socket 连接,并使用 InputStream 和 OutputStream 类来读写数据。
下面是一个简单的 Socket 编程示例:
import java.net.*;
import java.io.*;
public class SocketExample {public static void main(String[] args) throws IOException {
String serverName = "www.baidu.com";
int port = 80;
Socket socket = new Socket(serverName, port);
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("GET / HTTP/1.1");
printWriter.println("Host: www.baidu.com");
printWriter.println();
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine()) != null) {System.out.println(line);
}
socket.close();}
}
这个例子创建了一个 Socket 连接到百度首页(端口 80),并发送了一个 HTTP GET 请求。然后从 InputStream 读取服务器返回的数据,并把它们打印出来。
二、HTTP 协议
HTTP 协议是 Web 上的一种应用层协议,它定义了客户端和服务器之间的通信方式。HTTP 协议使用 TCP 作为传输协议,并使用 URL 来定位资源。在 Java 中,我们可以使用 URLConnection 类来发送 HTTP 请求和读取服务器响应。
下面是一个使用 URLConnection 发送 HTTP 请求的示例:
import java.net.*;
import java.io.*;
public class HttpExample {public static void main(String[] args) throws IOException {URL url = new URL("http://www.baidu.com/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {System.out.println(line);
}
connection.disconnect();}
}
这个例子创建了一个 URLConnection 对象,并从中获取 InputStream 来读取服务器响应的数据。
三、TCP/IP 协议
TCP/IP 协议是 Internet 上的一种传输协议,它定义了数据如何在网络上传输。在 Java 中,我们可以使用 Socket 和 ServerSocket 类来实现 TCP/IP 协议的通信。
下面是一个使用 ServerSocket 和 Socket 实现简单的客户端 / 服务器通信的示例:
import java.net.*;
import java.io.*;
public class TcpExample {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Waiting for client...");
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected.");
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("Hello, client!");
InputStream inputStream = clientSocket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine()) != null) {System.out.println("Client said:" + line);
}
clientSocket.close();
serverSocket.close();}
}
这个例子创建了一个 ServerSocket 对象来监听端口 8888 上的连接请求。当客户端连接到该端口时,服务器将发送一条消息给客户端,并等待接收来自客户端的消息。
原文地址: Java 网络编程:Socket 编程、HTTP 协议、TCP/IP 协议等