Python工程师Java之路(v)Socket极简代码

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python工程师Java之路(v)Socket极简代码相关的知识,希望对你有一定的参考价值。

文章目录

概述

  • Client/Server结构:客户端和服务器结构
  • TCP
    传输控制协议(Transmission Control Protocol)
    可靠的连接
  • UDP
    用户数据报协议(User Datagram Protocol)
    发送端发出数据时,不会确认接收端是否存在;接收端接收数据时,不会向发送端反馈是否收到
    网络传输的基本单位 :数据报(Datagram)

TCP

服务端

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server 
    public static void main(String[] args)throws Exception 
        //1、创建ServerSocket对象,绑定端口
        ServerSocket server =  new ServerSocket(5000);

        //2、监听客户端的连接
        Socket socket = server.accept();
        //上面方法是阻塞的,如果没有客户端连接,就一直等待
        System.out.println("有客户端连进");

        //3、接收客户端的数据
        InputStream inputStream = socket.getInputStream();
        byte[] bytes = new byte[1024];
        StringBuilder stringBuilder = new StringBuilder();
        int len;
        while ((len = inputStream.read(bytes)) != -1) 
            stringBuilder.append(new String(bytes, 0, len));
        
        System.out.println("接收到客户端发送的消息:" + stringBuilder);

        //4、关闭socket,不再与该客户端通信
        socket.close();

        //5、关闭ServerSocket
        server.close();
    

客户端

import java.io.OutputStream;
import java.net.Socket;

public class Client 
    public static void main(String[] args) throws Exception 
        //1、准备Socket,连接服务器,需要指定服务器的IP地址和端口号
        Socket socket = new Socket("localhost", 5000);

        //2、向服务端发送数据
        OutputStream out = socket.getOutputStream();
        out.write("Python".getBytes());
        socket.shutdownOutput();

        //3、关闭socket,断开与服务器的连接
        socket.close();
    

UDP

接收端

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Receiver 
    public static void main(String[] args) throws Exception 
        //1、创建数据报套接字,绑定5000端口号
        DatagramSocket ds = new DatagramSocket(5000);

        //2、创建数据报包
        byte[] bytes = new byte[1024 * 64];
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length);

        //3、套接字接受包
        ds.receive(dp);

        //4、拆封数据
        String str = new String(bytes, 0, dp.getLength());
        System.out.println(str);
    

发送端

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Sender 
    public static void main(String[] args) throws Exception 
        //1、创建数据报套接字
        DatagramSocket ds = new DatagramSocket();

        //2、创建数据报包
        byte[] bytes = "Python".getBytes();
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("localhost"), 5000);

        //3、发送数据报包
        ds.send(dp);

        //4、关闭套接字
        ds.close();
    

以上是关于Python工程师Java之路(v)Socket极简代码的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之路:socket简单实例

Python工程师Java之路(u)Java循环输入

Python工程师Java之路(u)Java循环输入

Python工程师Java之路(s)时间戳转字符串

Python工程师Java之路(q)Properties

Python工程师Java之路(t)SpringBoot部署步骤 java -jar