当前位置: 首页 > news >正文

南京著名网站制作公司翻译

南京著名网站制作,公司翻译,品牌搜索,如何增加网站流量一.什么是套接字 在 Java 中,套接字(Socket)是一种用于实现网络通信的机制,它提供了一种在不同计算机之间进行数据传输的方式。 1.分类 流套接字(Stream Socket):使用 TCP 协议,提…

一.什么是套接字

在 Java 中,套接字(Socket)是一种用于实现网络通信的机制,它提供了一种在不同计算机之间进行数据传输的方式。

1.分类

  • 流套接字(Stream Socket)使用 TCP 协议,提供可靠的、面向连接的字节流通信。数据以连续的字节流形式传输,保证数据的顺序和完整性,适用于对数据准确性要求高的场景,如文件传输、HTTP 协议等。
  • 数据报套接字(Datagram Socket)使用 UDP 协议,提供无连接的、不可靠的数据报通信。数据以独立的数据包(数据报)形式传输,不保证数据的顺序和完整性,但具有较高的实时性,适用于对实时性要求高但能容忍一定数据丢失的场景,如视频会议、实时游戏等。

2.相关类

  • ServerSocket用于服务器端,创建一个监听特定端口的套接字,等待客户端连接。通过accept()方法阻塞等待客户端连接,一旦有客户端连接,就返回一个Socket对象用于与该客户端进行通信。
  • Socket客户端和服务器端在建立连接后,都使用Socket对象进行数据的读写操作。可以通过getInputStream()获取输入流读取数据,通过getOutputStream()获取输出流写入数据。

2.1 getInputStream() 和 getOutputStream() 

getInputStream() 和 getOutputStream() 是 Socket 类的重要方法

  • getInputStream()Socket 类的 getInputStream() 方法会返回一个 InputStream 对象,这个对象能够让程序从  与该 Socket 连接的另一端读取数据。当网络中的数据传输到本地时,就可以通过这个输入流把数据读取到程序里。
  • getOutputStream()getOutputStream() 方法返回一个 OutputStream 对象,程序可以使用这个对象向   与该 Socket 连接的另一端写入数据。当程序有数据需要发送到网络的另一端时,就可以通过这个输出流将数据发送出去。

 二.流套接字-代码示例

下面是一个简单的基于 TCP 协议的客户端 - 服务器通信示例

1.服务器端代码

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {try {
1.客户端和服务器端建立连接/ 创建一个监听端口号为888的服务器端套接字ServerSocket serverSocket = new ServerSocket(8888);/等待客户端连接(通过accept()方法阻塞等待)/一旦有客户端连接,就返回一个Socket对象用于与该客户端进行通信Socket socket = serverSocket.accept();2.使用Socket对象进行数据的读写操作/ 获取输入流读取数据.输出流写入数据InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream();3. 读取客户端发送过来的数据/创建了一个长度为 1024 的字节数组 bufferbyte[] buffer = new byte[1024];/从输入流中读取数据到 buffer 数组中。该方法会返回实际读取到的字节数,将这个值赋给变量 lengthint length = inputStream.read(buffer);/将字节数组 buffer 中从索引 0 开始、长度为 length 的字节数据转换为字符串String message = new String(buffer, 0, length);/打印出来System.out.println("Received from client: " + message);4. 向客户端发送响应数据String response = "Hello, client!";outputStream.write(response.getBytes());
5. 关闭资源socket.close();serverSocket.close();} catch (IOException e) {e.printStackTrace();}}
}

2.客户端代码 

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) {try {
1.让客户端连接到服务器/创建客户端套接字,连接到服务器。指定服务器地址,服务器端口号/与本地服务器(localhost)的 8888 端口建立 TCP 连接Socket socket = new Socket("localhost", 8888);2.使用socket对象进行数据的读写操作/获取输入流和输出流InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream();
3. 向服务器发送数据String message = "Hello, server!";outputStream.write(message.getBytes());
4. 读取服务器响应的数据byte[] buffer = new byte[1024];int length = inputStream.read(buffer);String response = new String(buffer, 0, length);System.out.println("Received from server: " + response);// 关闭资源socket.close();} catch (IOException e) {e.printStackTrace();}}
}

三.数据报套接字-代码示例 

简单的使用DatagramSocket发送和接收 UDP 数据包的示例。

UDPClientUDPServer发送了一条消息,UDPServer接收并打印了该消息

1.服务器端代码 

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class UDPServer {public static void main(String[] args) throws Exception {/创建一个监听端口号为888的服务器端UDP套接字DatagramSocket socket = new DatagramSocket(8888);byte[] buffer = new byte[1024];/创建一个用于接收指定长度数据的数据包DatagramPacket packet = new DatagramPacket(buffer, buffer.length);/调用recive()方法接收数据-将接收到的数据填充到Packet中socket.receive(packet);/获取数据包中的数据字节数组,(从0开始到实际长度)String message = new String(packet.getData(), 0, packet.getLength());System.out.println("Received: " + message);// 关闭套接字socket.close();}
}

 2.客户端代码

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class UDPClient {public static void main(String[] args) throws Exception {/ 创建一个客户端UDP套接字DatagramSocket socket = new DatagramSocket();String message = "Hello, Server!";//要发送的消息/ 将消息转换为字节数组byte[] buffer = message.getBytes();/把数据封装到数据包里/ 创建一个用于接收指定长度数据的数据包,且指定数据包要发送到的目标地址和端口号DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 8888);/ 发送数据socket.send(packet);/ 关闭套接字socket.close();}
}

 四.DatagramSocket

是 Java 中用于表示 UDP 数据包的类

1.作用

适用场景:用于DatagramSocket中发送和接收数据时候

1.在发送数据时,需要将数据封装在DatagramPacket中,并指定目标地址和端口号;

2.在接收数据时,通过DatagramSocket对象的recieve( )方法将接收到的数据填充到DatagramPacket,通过它可以获取到数据内容、发送方的地址和端口号等信息。

2.构造方法

  • DatagramPacket(byte[] buf, int length):创建一个用于接收指定长度数据的数据包。
  • DatagramPacket(byte[] buf, int offset, int length):创建一个指定偏移量和长度的接收数据包。
  • DatagramPacket(byte[] buf, int length, InetAddress address, int port):创建一个用于发送数据的数据包,指定了目标地址和端口号。
  • DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port):创建一个指定偏移量、长度、目标地址和端口号的发送数据包。

3.主要方法

  • getAddress():获取数据包的发送方或接收方的 IP 地址。
  • getPort():获取数据包的发送方或接收方的端口号。
  • getData():获取数据包中的数据字节数组。
  • getLength():获取数据包中实际数据的长度

http://www.dtcms.com/a/500239.html

相关文章:

  • c和c++生态以及学习路线和应用领域
  • 网站名称是什么意思有没有做翻译赚钱的网站
  • 网站开发语言怎么用ps做网站框架
  • Linux中pinctrl使用
  • 网站建设设计说明医疗器械网站建设方案
  • 网站建设 主机选择快照打开是网站网站
  • 从零构建RAG知识库管理系统(三)
  • 网站建设制作小程序开发wordpress 标点排版
  • 【单调栈 离散化】P10798 「CZOI-R1」消除威胁|普及+
  • 邵武建设局网站wordpress多用户博客
  • (Kotlin高级特性三)Kotlin密封类(Sealed Class)在何时比枚举更适用?
  • kalibr进行相机内参以及相机imu的融合标定
  • 最简单的做网站工具网站发外链的好处
  • 北京神州网站建设xxx网站策划书
  • linux开启bbr网络优化
  • 前后端路径处理完整指南:从零开始理解Web开发中的路径问题
  • 为什么网站要备案头条新闻 免费下载
  • 汇通网做期货的网站做期货的网站软件开发平台 devcloud
  • 专门做橱柜衣柜效果图的网站青海网站建设怎么建设
  • 算法沉淀第六天(牛客小白月赛122 和 Codeforces Round 1059 (Div. 3))
  • 网站建设与维护蒋勇从前端开发培训机构有哪些
  • 网站建设后的心得浙江省建设通网站
  • Git的多人协作
  • 成都开发网站建设怎么下载应用商店
  • 14-哈希SHA1案例:宝钢
  • Python数据分析:小实例,数人头
  • 单页面网站怎么做软件项目开发文档模板
  • 松岗营销型网站建设软文范例大全
  • 本地网站建设方案信息大全网站数据迁移教程
  • 麦肯锡:从「AI价值悖论」到代理式 AI 的产业化落地