Java网络编程函数实战:Socket、Http、TCP等网络编程示例
发布时间:2023-05-24 01:54:52
Java网络编程是指使用Java语言编写程序,实现在计算机网络上进行数据传输和通信的功能。在Java网络编程中常用的函数有Socket、Http、TCP等,在实际开发中,也会运用到这些函数,下面就让我们通过实例来学习这些函数的使用。
Socket函数:
Socket表示套接字,它用于在计算机之间建立网络连接。通过Socket函数,我们可以实现客户机和服务器之间的通信。下面是一个简单的Socket通信实例:
客户端代码:
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws Exception {
//1.创建一个Socket对象,指定要连接的服务器地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
//2.获取输出流,用于发送数据给服务器
PrintStream ps = new PrintStream(socket.getOutputStream());
//3.获取输入流,用于读取服务器的响应数据
Scanner scanner = new Scanner(socket.getInputStream());
//4.循环输入数据
while (true) {
System.out.print("请输入要发送的数据:");
String data = new Scanner(System.in).nextLine();
//5.判断是否退出
if("bye".equalsIgnoreCase(data)){
break;
}
//6.发送数据给服务器
ps.println(data);
//7.读取服务器的响应数据
String response = scanner.nextLine();
System.out.println("服务器响应数据:"+response);
}
//8.关闭资源
scanner.close();
ps.close();
socket.close();
}
}
服务器端代码:
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String[] args) throws Exception {
//1.创建一个ServerSocket对象
ServerSocket serverSocket = new ServerSocket(8888);
//2.等待客户端连接
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功!");
//3.获取输入流,用于读取客户端发送的数据
Scanner scanner = new Scanner(socket.getInputStream());
//4.获取输出流,用于向客户端发送响应数据
PrintStream ps = new PrintStream(socket.getOutputStream());
//5.循环读取客户端发送的数据
while (true) {
String data = scanner.nextLine();
System.out.println("客户端发送数据:"+data);
//6.判断客户端是否退出
if("bye".equalsIgnoreCase(data)){
break;
}
//7.响应客户端发送的数据
ps.println("服务器响应:"+data);
}
//8.关闭资源
scanner.close();
ps.close();
socket.close();
serverSocket.close();
}
}
运行程序,我们可以看到客户端会不断向服务器发送数据,服务器则会一直读取和响应客户端发送的数据。
Http函数:
Http表示超文本传输协议,它是一种应用程序层协议,用于在计算机网络上传输超媒体文档和协商其他信息。在Java中,我们可以使用Http函数实现Http通信。下面是一个简单的Http通信实例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpClient {
public static void main(String[] args) throws Exception {
//1.创建一个URL对象
URL url = new URL("http://www.baidu.com");
//2.打开一个HttpURLConnection连接对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//3.设置请求方法
connection.setRequestMethod("GET");
//4.获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
//5.读取响应数据
String line = null;
StringBuffer stringBuffer = new StringBuffer();
while((line = reader.readLine())!=null){
stringBuffer.append(line);
}
//6.关闭资源
reader.close();
connection.disconnect();
//7.输出响应数据
System.out.println(stringBuffer.toString());
}
}
运行程序,我们可以看到控制台输出了百度首页的HTML源码。
TCP函数:
TCP表示传输控制协议,是面向连接的协议,保证了数据传输的可靠性。在Java中,我们可以使用TCP函数实现TCP通信。下面是一个简单的TCP通信实例:
客户端代码:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class TCPClient {
public static void main(String[] args) throws Exception {
//1.创建一个Socket对象,指定要连接的服务器地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
//2.获取输出流,用于发送数据给服务器
OutputStream outputStream = socket.getOutputStream();
//3.获取输入流,用于读取服务器的响应数据
InputStream inputStream = socket.getInputStream();
//4.循环输入数据
while (true) {
System.out.print("请输入要发送的数据:");
String data = new Scanner(System.in).nextLine();
//5.判断是否退出
if("bye".equalsIgnoreCase(data)){
break;
}
//6.发送数据给服务器
outputStream.write(data.getBytes());
//7.读取服务器的响应数据
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
String response = new String(bytes,0,len);
System.out.println("服务器响应数据:"+response);
}
//8.关闭资源
inputStream.close();
outputStream.close();
socket.close();
}
}
服务器端代码:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class TCPServer {
public static void main(String[] args) throws Exception {
//1.创建一个ServerSocket对象
ServerSocket serverSocket = new ServerSocket(8888);
//2.等待客户端连接
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功!");
//3.获取输入流,用于读取客户端发送的数据
InputStream inputStream = socket.getInputStream();
//4.获取输出流,用于向客户端发送响应数据
OutputStream outputStream = socket.getOutputStream();
//5.循环读取客户端发送的数据
while (true) {
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
String data = new String(bytes,0,len);
System.out.println("客户端发送数据:"+data);
//6.判断客户端是否退出
if("bye".equalsIgnoreCase(data)){
break;
}
//7.响应客户端发送的数据
outputStream.write(("服务器响应:"+data).getBytes());
}
//8.关闭资源
inputStream.close();
outputStream.close();
socket.close();
serverSocket.close();
}
}
运行程序,我们可以看到客户端会不断向服务器发送数据,服务器则会一直读取和响应客户端发送的数据。与Socket函数相比,TCP函数的优势在于保证了数据传输的可靠性,同时也增加了通信的复杂度。
总结:
通过以上的实例,我们可以看到Java网络编程函数的使用并不复杂,不过在实际开发中,还需要考虑网络通信的稳定性和安全性等问题。因此,我们需要对网络编程有深入的了解和掌握,才能更好地开发网络应用程序。
