随着互联网的快速发展,网络编程变得越来越重要,Java作为一门流行的编程语言,自然也有着强大的网络编程能力。本文将简要介绍Java中的网络编程。

  1. 基础

在Java中,网络编程需要使用到两个重要的类:Socket和ServerSocket。 Socket类被用于建立客户端的连接,而ServerSocket则被用于创建服务器端的连接。 Socket对象通过指定IP地址和端口号进行创建,而ServerSocket则指定本地端口号进行创建。

  1. 网络传输协议

在进行网络编程时,需要了解一些基本的网络传输协议,例如TCP/IP、UDP和HTTP等。 TCP/IP和UDP是最常用的两种协议。TCP/IP是面向连接的协议,它提供可靠的数据传输,而UDP则是无连接的协议,它提供了更快的数据传输。 HTTP协议则是离线请求和应答协议,它被广泛应用于Web服务器和浏览器之间的通信。

  1. 编写基于TCP/IP协议的网络程序

下面是一个简单的客户端/服务器程序的例子:

客户端:

import java.net.*;
import java.io.*;
public class Client {
   public static void main(String [] args) {
      String serverName = args[0];
      int port = Integer.parseInt(args[1]);
      try {
         System.out.println("连接到主机:" + serverName + " ,端口号:" + port);
         Socket client = new Socket(serverName, port);
         System.out.println("远程主机地址:" + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out = new DataOutputStream(outToServer);
         out.writeUTF("Hello from " + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in = new DataInputStream(inFromServer);
         System.out.println("服务器响应: " + in.readUTF());
         client.close();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}
登录后复制

服务器端:

import java.net.*;
import java.io.*;
public class Server extends Thread {
   private ServerSocket serverSocket;
   
   public Server(int port) throws IOException {
      serverSocket = new ServerSocket(port);
      serverSocket.setSoTimeout(10000);
   }

   public void run() {
      while(true) {
         try {
            System.out.println("等待客户端连接,端口号为:" + serverSocket.getLocalPort() + "...");
            Socket server = serverSocket.accept();
            System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
            DataInputStream in = new DataInputStream(server.getInputStream());
            System.out.println(in.readUTF());
            DataOutputStream out = new DataOutputStream(server.getOutputStream());
            out.writeUTF("感谢连接我:" + server.getLocalSocketAddress() + "
Goodbye!");
            server.close();
         } catch (SocketTimeoutException s) {
            System.out.println("Socket timed out!");
            break;
         } catch (IOException e) {
            e.printStackTrace();
            break;
         }
      }
   }
   
   public static void main(String [] args) {
      int port = Integer.parseInt(args[0]);
      try {
         Thread t = new Server(port);
         t.start();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}
登录后复制

这个程序演示了客户端和服务器之间的简单通信。当客户端运行时,它发送一个字符串给服务器,服务器响应该字符串。

  1. 总结

Java中的网络编程可以使用TCP/IP和UDP等协议进行。 在编写网络程序时,需要使用Socket类和ServerSocket类。

以上仅是Java中网络编程的入门部分,关于网络编程还有许多需要深入了解的内容,例如数据包的发送和接收,多线程网络编程,以及通过HTTP访问Web服务器等。

以上就是Java 中的网络编程的详细内容,更多请关注Work网其它相关文章!

09-18 14:03