java使用tcpudp发送信息(代码片段)

_DiMinisH _DiMinisH     2022-12-14     581

关键词:

Java 使用TCP UDP发送信息

网络通信的三要素

  1. IP地址
  2. 端口号
  3. 网络通信协议

TCP

客户端

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

public class TcpClient 
    public static void main(String[] args) throws Exception 
        // 创建要发生的ip地址
        InetAddress inetAddress = InetAddress.getByName("localhost");
        // 创建套接字
        Socket socket = new Socket(inetAddress, 9999);
        // 拿到输入流
        OutputStream outputStream = socket.getOutputStream();
        // 向输入流中放入要发送的信息并发送
        outputStream.write("你好".getBytes());
        // 关闭
        outputStream.close();
        socket.close();
    

服务端

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

public class TcpServer 

    public static void main(String[] args) throws Exception 
        // 创建服务器套接字,指定接收的端口
        ServerSocket serverSocket = new ServerSocket(9999);
        // 接收信息
        Socket socket = serverSocket.accept();
        // 下面是把信息存放到新的流中
        // 拿到输入流
        InputStream inputStream = socket.getInputStream();
        // 创建存放信息的数组输出流
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        // 逐行读取信息放入buffer并放到输出流中
        while ((len = inputStream.read(buffer)) != -1)
            byteArrayOutputStream.write(buffer, 0, len);
        // 输出接收到的信息
        System.out.println(byteArrayOutputStream);
        // 关闭
        byteArrayOutputStream.close();
        inputStream.close();
        socket.close();
        serverSocket.close();
    

先启动服务端,再启动客户端,之后可以看到服务端收到了客户端发的信息

UDP

发送端

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

public class UdpSender 
    public static void main(String[] args) throws Exception 
        DatagramSocket datagramSocket = new DatagramSocket();
        InetAddress inetAddress = InetAddress.getByName("localhost");
        DatagramPacket datagramPacket = new DatagramPacket(
                "你好".getBytes(),           // 发送的数据
                0,                          // 数据长度从0开始 
                "你好".getBytes().length,    // 到末尾结束
                inetAddress,                // ip地址
                20000                       // 端口号
        );
        // 发送
        datagramSocket.send(datagramPacket);
        datagramSocket.close();
    

接收端

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

public class UdpReceiver 
    public static void main(String[] args) throws Exception 
        DatagramSocket socket = new DatagramSocket(20000);
        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer, 0 , buffer.length);
        socket.receive(packet);
        System.out.println(new String(packet.getData(), 0, packet.getLength()));
    

先启动接收端,再启动发送端

黏包的原理(tcpudp)(代码片段)

黏包   指数据混乱问题(发送端发送数据,接收端不知如何去接收)   只有tcp协议才会发送粘包,udp不会发生黏包(tcp)      有一个合包机制(nagle算法),将多次连续发送且间隔较小的数据,进行打包成一... 查看详情

java学习网络编程全总结——tcpudp多线程io流socket简易在线咨询聊天室java爬虫(代码片段)

目录网络编程1.1、概述1.2、网络通信的要素1.3、IP1.4、端口(port)1.5、通信协议1.6、TCP文件上传Tomcat1.7、UDP发送消息构造方法摘要构造方法摘要咨询DatagramPacket.getData()与DatagramPacket.getLength()的误区trimstartsWith在线咨询:两个人都... 查看详情

bingbingc(网络编程tcpudp)(代码片段)

上一篇目录标题字节序字节序转化TCP和UDPUDPsocket编程接口编码TCP接口检查连接是否成功代码单线程多进程服务端多线程高级IO参考字节序小端字节序:低位放在低地址大端字节序:低位放在高地址主机字节序:指的是机器本身的字节... 查看详情

bingbingc(网络编程tcpudp)(代码片段)

上一篇目录标题字节序字节序转化TCP和UDPUDPsocket编程接口编码TCP接口检查连接是否成功代码单线程多进程服务端多线程高级IO参考字节序小端字节序:低位放在低地址大端字节序:低位放在高地址主机字节序:指的是机器本身的字节... 查看详情

tcpudp的基本概念(代码片段)

...ransmissionControlProtocol)为传输控制协议。TCP所有的通信都会使用源端口和目的端口,这些信息都可以在TCP的头部信息中找到。为使数据传输到远程服务器端或设备的特定应用中,TCP数据包必须知道远程服务所监听的端口。如果尝试... 查看详情

36基于tcpudp协议的嵌套字通信(代码片段)

一、套接字工作流程1.1、套接字流程  服务器端先初始化socket:(创建套接字模块)  和端口绑定bind:(将地址绑定到套接字)  对端口进行监听listen:(监听链接)  调用accept堵塞:(接收服务器链接)  等待客... 查看详情

使用javamail发送邮件03(代码片段)

使用java发送邮件,这里发件是使用qq邮箱发送;如果使用其他类型邮箱,将qq相关的信息改成对应的邮箱;importjava.io.File;importjava.util.ArrayList;importjava.util.List;importjava.util.Properties;importjavax.activation.DataHandler;importjavax.activati 查看详情

java示例代码_使用XMLHttpRequest中的信息。发送(字符串)

java示例代码_使用XMLHttpRequest中的信息。发送(字符串) 查看详情

python实现tcpudp客户端(代码片段)

1、TCP客户端#-*-coding:UTF-8-*-__author__='michael'importsockettarget_host="www.baidu.com"target_port=80#创建一个socket对象clnt=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#连接客户端clnt.connect((target_host,target_port))#发送一些数据clnt.sen... 查看详情

zabbix使用邮件发送告警信息(代码片段)

配置系统mail命令,使其可以发送外网邮件mail 命令配置修改zabbix_server配置文件,使其可以执行告警脚本[[email protected]etc]#vim/usr/local/zabbix/etc/zabbix_server.conf474###Option:AlertScriptsPath475#Fullpathtolocationofcustomalert 查看详情

socket编程tcpudp通信总结(代码片段)

...微信、浏览器等程序,都与Socket编程有关。我们平时使用浏览器查资料,这个过程的技术原理是怎样的呢?我们平时使用浏览器&#x 查看详情

使用java发送邮件(代码片段)

...用户发送邮件,例如激活邮件、通知邮件等等。那么如何使用Java来给用户发送邮件呢?使用java代码发送邮件使用工具类发送邮件使用Spring进行整合发送邮件发送带附件的邮件 一.使用Java代码发送邮件第一步:导入依赖坐标<... 查看详情

spring中使用网易邮箱或qq邮箱发送信息(代码片段)

Spring中使用网易邮箱或qq邮箱发送信息1.所需依赖2.代码3.qq邮箱配置获取授权码4.网易邮箱配置获取授权码测试类可能要引入一些依赖,大家自行引入就行,能发送成功邮件就行发送Email服务1.所需依赖<dependency><groupId>org.sprin... 查看详情

springboot中使用网易邮箱或qq邮箱发送信息(代码片段)

SpringBoot中使用网易邮箱或qq邮箱发送信息1.所需依赖2.代码3.qq邮箱配置获取授权码4.网易邮箱配置获取授权码5.测试类可能要引入一些依赖,大家自行引入注意,没有配置properties文件直接运行会报错发送Email服务1.所需依赖<dependency... 查看详情

tcpudp通信(代码片段)

...型1.应用层 上面3层:应用程序、协议:HTTP、FTP2.传输层 TCPUDP3.网络层 IP(不可靠)ARPRARPICMP4.数据链路层 下面2层 UDPUserDatagramProtocol无连接的传 查看详情

tcpudp之间的区别

UDP:面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息 优点:UDP速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送 缺点:UDP传送数据前并不与对方建立连接,对接收的数据也... 查看详情

rails使用云片和chinasms发送验证信息(代码片段)

rails6,云片,china_sms,需要实现短信验证和语音验证。1.添加china_sms的gem包:#ChinaSMSclientgem‘china_sms‘,github:‘saberma/china_sms‘,branch:‘master‘然后运行:bundleinstall2.配置在‘config/initializers/china_sms.rb‘文件中添加一行配置:ChinaSMS 查看详情

javalearn#(14)网络及分类tcpudp协议ipsockettcp编程udp编程(代码片段)

1.网络基本概念1.1计算机网络定义:是指将地理位置不同的具有独立功能(没有网络可以独立存在的)的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议... 查看详情