Java中使用Socket类和URL类的函数实现网络编程
网络编程是指通过计算机网络进行通信的编程,用Java语言实现网络编程通常使用Socket类和URL类。
Socket类是Java中用于实现网络通信的基础类,它在应用程序中负责处理和传输网络数据。Socket类可以创建客户端套接字和服务器套接字,使用TCP或UDP协议进行通信。
如下是Socket类的主要方法:
1. Socket()
构造一个新的套接字对象。
2. connect()
连接到远程计算机的套接字。
3. getInputStream()
返回此套接字的输入流。
4. getOutputStream()
返回此套接字的输出流。
5. close()
关闭此套接字。
URL类是Java中用于访问网络资源的基础类,它提供了访问Web和FTP等远程资源的方法。
如下是URL类的主要方法:
1. URL(String url)
创建一个URL对象,其字符串表示形式为指定的协议、主机、端口和路径组成的URL。
2. openConnection()
打开到此URL所表示的资源的通信链接。
3. getInputStream()
返回URL所指定的资源的输入流。
4. getOutputStream()
返回URL所指定的资源的输出流。
5. getContent()
获取URL所指定的资源的内容。
6. getFile()
获取URL所指定的资源的文件名。
7. getHost()
获取URL所指定的资源的主机名。
8. getPath()
获取URL所指定的资源的路径名。
下面以实现一个简单的客户端和服务器应用程序为例,演示Socket类的使用。
在这个应用程序中,客户端向服务器发送一个数值,服务器将返回数值的平方并显示在客户端。具体实现如下:
服务器端代码:
import java.io.*;
import java.net.*;
class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(8080); // 创建服务器套接字
System.out.println("服务端启动...");
Socket s = ss.accept(); // 等待客户端连接
System.out.println("已连接客户端: " + s.getInetAddress().getHostAddress());
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); // 获取客户端输入流
PrintWriter pw = new PrintWriter(s.getOutputStream()); // 获取客户端输出流
String str = br.readLine(); // 读取客户端发送过来的数据
int num = Integer.parseInt(str);
int result = num * num;
pw.println(result); // 向客户端返回计算结果
pw.flush();
s.close(); // 关闭套接字
}
}
客户端代码:
import java.io.*;
import java.net.*;
class Client
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("127.0.0.1", 8080); // 创建客户端套接字,连接服务器
System.out.println("已连接服务器...");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 创建输入流
PrintWriter pw = new PrintWriter(s.getOutputStream()); // 获取输出流
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); // 获取输入流
String str = br.readLine(); // 从控制台读取数据
pw.println(str); // 将数据发送给服务器
pw.flush();
String result = in.readLine(); // 读取服务器返回的数据
System.out.println("计算结果: " + result); // 显示计算结果
s.close(); // 关闭套接字
}
}
而对于URL类的使用,以下是一个简单的示例:
import java.io.*;
import java.net.*;
class URLTest
{
public static void main(String[] args) throws Exception
{
URL url = new URL("https://www.baidu.com"); // 创建URL对象
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); // 打开URL连接并获取输入流
String inputLine;
while ((inputLine = in.readLine()) != null) // 逐行读取输入流中的内容
{
System.out.println(inputLine); // 输出
}
in.close(); // 关闭输入流
}
}
以上代码将输出百度首页的网页源码。在实际开发中,使用URL类可以获取远程文件、读取网页内容等。而结合Socket类,通过实现自定义协议可以实现更复杂的网络通信。
