Socket编程讲解及java实例

Socket编程是一种网络编程的方式,它允许程序在不同的计算机之间进行通信。在Socket编程中,程序可以通过网络发送和接收数据。Java是一种非常流行的编程语言,它提供了一些类来进行Socket编程。下面是一个简单的Java Socket编程示例,演示了如何建立一个简单的客户端和服务器。

  1. 服务器端代码:
    import java.net.*;
    import java.io.*;
    
    public class Server {
        public static void main(String[] args) throws IOException {
            ServerSocket serverSocket = null;
    
            try {
                serverSocket = new ServerSocket(4444);
            } catch (IOException e) {
                System.err.println("Could not listen on port: 4444.");
                System.exit(1);
            }
    
            Socket clientSocket = null;
    
            try {
                clientSocket = serverSocket.accept();
            } catch (IOException e) {
                System.err.println("Accept failed.");
                System.exit(1);
            }
    
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            String inputLine;
    
            while ((inputLine = in.readLine()) != null) {
                out.println("Server: " + inputLine);
            }
    
            out.close();
            in.close();
            clientSocket.close();
            serverSocket.close();
        }
    }
    
  2. 客户端代码:
    import java.io.*;
    import java.net.*;
    
    public class Client {
        public static void main(String[] args) throws IOException {
            Socket echoSocket = null;
            PrintWriter out = null;
            BufferedReader in = null;
    
            try {
                echoSocket = new Socket("localhost", 4444);
                out = new PrintWriter(echoSocket.getOutputStream(), true);
                in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
            } catch (UnknownHostException e) {
                System.err.println("Don't know about host: localhost.");
                System.exit(1);
            } catch (IOException e) {
                System.err.println("Couldn't get I/O for " + "the connection to: localhost.");
                System.exit(1);
            }
    
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
            String userInput;
    
            while ((userInput = stdIn.readLine()) != null) {
                out.println(userInput);
                System.out.println("echo: " + in.readLine());
            }
    
            out.close();
            in.close();
            stdIn.close();
            echoSocket.close();
        }
    }
    

        上面的示例中,客户端和服务器之间的通信是通过输入和输出流来实现的。服务器通过Socket的accept()方法等待客户端连接,一旦客户端连接成功,它将创建一个新的Socket对象来与客户端通信。在客户端代码中,Socket对象被创建用于连接到服务器。一旦连接建立,客户端将创建一个输出流用于向服务器发送消息,同时创建一个输入流用于接收来自服务器的响应。

        在上面的示例中,服务器和客户端都使用了PrintWriter和BufferedReader类来处理输入和输出流。PrintWriter类提供了一个方便的方法来将字符串写入输出流中,而BufferedReader类则提供了一个方便的方法来读取输入流中的字符串。这些类使得Socket编程变得简单易懂,尤其是对于初学者来说。

          总之,Socket编程是一种非常有用的技能,允许程序之间进行网络通信。Java提供了一些类来简化Socket编程的过程,并使其易于理解和使用。上面的示例演示了如何使用Java编写简单的客户端和服务器,以及如何使用输入和输出流来处理Socket通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值