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极简代码的主要内容,如果未能解决你的问题,请参考以下文章