Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送
發(fā)短信:不用連接,但需要知道對(duì)方的地址,客戶(hù)端、服務(wù)端沒(méi)有明確的界限,可以說(shuō)沒(méi)有客戶(hù)端、服務(wù)端一說(shuō)。
發(fā)送端
package lesson03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 發(fā)送端
*/
public class UdpClientDemo1 {
public static void main(String[] args) throws Exception {
//1、建立一個(gè) Socket
DatagramSocket socket = new DatagramSocket();
/**
* 2、建個(gè)包
*/
//需要發(fā)送的消息
String msg = "你好啊,服務(wù)器!";
//發(fā)送地址
InetAddress localhost = InetAddress.getByName("localhost"); //主機(jī)
//發(fā)送端口
int port = 9090;
/**
* 五個(gè)參數(shù):
* @param buf msg.getBytes():需要發(fā)送的數(shù)據(jù)包
* @param offset 0:數(shù)據(jù)偏移量
* @param length msg.getBytes().length:數(shù)據(jù)長(zhǎng)度
* @param address localhost:目標(biāo)地址
* @param port port:目標(biāo)端口
*/
DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);
//3、發(fā)送包
socket.send(packet);
//4、關(guān)閉流
socket.close();
}
}
接收端
package lesson03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* 接收端
*/
public class UdpServerDemo1 {
public static void main(String[] args) throws Exception {
//開(kāi)放端口
DatagramSocket socket = new DatagramSocket(9090);
//接收數(shù)據(jù)包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
//接收
socket.receive(packet); //阻塞接收
//輸出數(shù)據(jù)包地址
System.out.println(packet.getAddress().getHostAddress());
/**
* 輸出數(shù)據(jù)包數(shù)據(jù)
* packet:Data 類(lèi)型
* 通過(guò)構(gòu)造器轉(zhuǎn)成 String 類(lèi)型:new String();
*/
System.out.println(new String(packet.getData(), 0, packet.getLength()));
//關(guān)閉連接
socket.close();
}
}
以上就是Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送的詳細(xì)內(nèi)容,更多關(guān)于Java 消息發(fā)送的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- RxJava的消息發(fā)送和線(xiàn)程切換實(shí)現(xiàn)原理
- 使用Java和WebSocket實(shí)現(xiàn)網(wǎng)頁(yè)聊天室實(shí)例代碼
- 基于Java Socket實(shí)現(xiàn)一個(gè)簡(jiǎn)易在線(xiàn)聊天功能(一)
- java聊天室的實(shí)現(xiàn)代碼
- Java基于socket實(shí)現(xiàn)簡(jiǎn)易聊天室實(shí)例
- java實(shí)現(xiàn)自動(dòng)回復(fù)聊天機(jī)器人
- java socket實(shí)現(xiàn)聊天室 java實(shí)現(xiàn)多人聊天功能
- java中UDP簡(jiǎn)單聊天程序?qū)嵗a
- java Socket實(shí)現(xiàn)網(wǎng)頁(yè)版在線(xiàn)聊天
- java實(shí)現(xiàn)一個(gè)簡(jiǎn)單TCPSocket聊天室功能分享
- Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)消息發(fā)送及聊天
相關(guān)文章
MyBatis?詳細(xì)講解動(dòng)態(tài)?SQL的使用
動(dòng)態(tài)?SQL?是?MyBatis?的強(qiáng)大特性之一。如果你使用過(guò)?JDBC?或其它類(lèi)似的框架,你應(yīng)該能理解根據(jù)不同條件拼接?SQL?語(yǔ)句有多痛苦,例如拼接時(shí)要確保不能忘記添加必要的空格,還要注意去掉列表最后一個(gè)列名的逗號(hào)。利用動(dòng)態(tài)?SQL,可以徹底擺脫這種痛苦2022-04-04
Java14發(fā)布了,再也不怕NullPointerException了
這篇文章主要介紹了Java14發(fā)布了,再也不怕NullPointerException了,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
關(guān)于java的九個(gè)預(yù)定義Class對(duì)象
這篇文章主要介紹了關(guān)于java的九個(gè)預(yù)定義Class對(duì)象,在Java中,沒(méi)有類(lèi)就無(wú)法做任何事情。然而,并不是所有的類(lèi)都具有面向?qū)ο筇卣?。如Math.random,并只需要知道方法名和參數(shù),需要的朋友可以參考下2023-05-05
SpringBoot之@Controller和@RequestMapping的實(shí)現(xiàn)原理解讀
這篇文章主要介紹了SpringBoot之@Controller和@RequestMapping的實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Mybatis通過(guò)Mapper代理連接數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Mybatis通過(guò)Mapper代理連接數(shù)據(jù)庫(kù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
詳解如何使用MyBatis簡(jiǎn)化JDBC開(kāi)發(fā)
JavaEE?企業(yè)級(jí)?Java?項(xiàng)目中的經(jīng)典三層架構(gòu)為表現(xiàn)層,業(yè)務(wù)層和持久層.MyBatis?對(duì)?JDBC?代碼進(jìn)行了封裝,作為一款優(yōu)秀的持久層框架,專(zhuān)門(mén)用于簡(jiǎn)化JDBC開(kāi)發(fā).本文主要介紹一下如何使用MyBatis簡(jiǎn)化JDBC開(kāi)發(fā),需要的可以參考一下2023-01-01
Java中用戶(hù)線(xiàn)程與守護(hù)線(xiàn)程的使用區(qū)別
這篇文章主要介紹了Java中用戶(hù)線(xiàn)程與守護(hù)線(xiàn)程的使用區(qū)別,Java語(yǔ)言中無(wú)論是線(xiàn)程還是線(xiàn)程池,默認(rèn)都是用戶(hù)線(xiàn)程,因此用戶(hù)線(xiàn)程也被成為普通線(xiàn)程,下文關(guān)于其與守護(hù)線(xiàn)程的區(qū)別詳情,需要的小伙伴可以參考一下2022-05-05
Java Iterator接口實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Java Iterator接口實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Spring定時(shí)任務(wù)注解@Scheduled詳解
這篇文章主要介紹了Spring定時(shí)任務(wù)注解@Scheduled詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個(gè)注解,主要是用來(lái)開(kāi)啟定時(shí)任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下2023-09-09

