java 网络编程 基于UDP协议的通信

使用UDP协议,写一个能在同一界面发送消息,并显示消息的聊天软件。

代码实现如下:

package com.abel.socket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/*
* 多线程在一个界面同时完成发送接收

* 1 发送send
* ***创建DatagramSocket,随机端口号
* 创建DatagramPacket,指定数据,长度,地址,端口
* 使用DatagramSocket发送DatagramPacket
* 关闭DatagramSocket

*2 接收 Receive
* 创建DatagramSocket,指定端口号
* 创建DatagramPacket,指定字节数组 长度
* 使用DatagramSocket接收DatagramPacket
* 关闭DatagramSocket
* 从DatagramPacket中获取数据

*/
public class Demo3_MoreThread {

public static void main(String[] args) throws InterruptedException {
new Receive().start();
Thread.sleep(10);
new Send().start();

}

}
class Receive extends Thread{
public void run() {
try {
DatagramSocket socket= new DatagramSocket(3321);
while(true) {
DatagramPacket packet=new DatagramPacket(new byte[1024], 1024);
socket.receive(packet);
byte[]arr=packet.getData();
int len=packet.getLength();
String ip=packet.getAddress().getHostAddress();//获取ip地址
int port=packet.getPort();//获取端口号
System.out.println(ip+":"+port+":"+new String(arr,0,len));
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
class Send extends Thread{
public void run() {
try {
Scanner sc=new Scanner(System.in);
DatagramSocket socket=new DatagramSocket();
while(true) {
String str=sc.nextLine();
if("quit".equals(str)) {
break;
}
DatagramPacket packet=new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 3321);
socket.send(packet);
}
socket.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}

原文地址:https://www.cnblogs.com/abel111/p/9477900.html

时间: 2024-11-18 01:39:34

java 网络编程 基于UDP协议的通信的相关文章

JAVA基础知识之网络编程——-基于UDP协议的通信例子

UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPacket) 下面是一个基于UDP协议的通信的例子, 服务器端, 1 package udp; 2 3 import java.io.IOException; 4 import java.net.Dat

Java网络编程 - 基于UDP协议 实现简单的聊天室程序

最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. 先看一下效果: 实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理. "聊天室001"的用户,小红和小绿相互聊了两句,"聊天室002"的小黑无人理会,在一旁寂寞着. 看一下代码实现: 1.首先是消息服务器的实现,功能很简单: 将客户端的信息(进入了哪一个聊

网络编程: 基于UDP协议的socket

udp是无链接的,启动服务之后可以直接接受消息,不需要提前建立链接 UDP协议的通信优势: 允许一个服务器同时和多个客户端通信, TCP不行 原文地址:https://www.cnblogs.com/niuli1987/p/9470035.html

Java网络编程(UDP程序设计)

//客户端 package org.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPClient { public static void main(String[] args) throws Exception{ DatagramSocket ds = null; byte[] buf = new byte[2014]; DatagramPacket dp = null;

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③  

Python中的端口协议之基于UDP协议的通信传输

UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) ------------------------------------------------------------------------------------------------------------------------------------- 一.UDP协议:OSI七层协议中的传输协议的一种(另外一种tcp协议),他们都是一种端口协议 与TCP协

java Socket编程-基于UDP

package com.wzy.UDPTest; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * * @author wzy * 服务器端,实现基于UDP的用户登陆 */ public class UDPserver { public static void main(String[] args) { try{ //1.创建服务器端Datagram

网络编程——基于UDP的网络化CPU性能检测

网络化计算机性能检测软件的开发,可对指定目标主机的CPU利用率进行远程检测,并自动对远程主机执行性能指标进行周期性检测,最终实现图形化显示检测结果. 网络通信模块:(客户端类似,因为udp是对等通信) 启动服务器:创建套接字并注册网络事件 void CRemoteCPUImitateDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 int Ret; char BufferData[2000] = { 0 }; int ClientAddrSize =

Java网络编程小结 URLConnection协议处理器

URL和URLConnection类 网络中的URL(Uniform Resource Locator)是统一资源定位符的简称.它表示Internet上某一资源的地址.通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点. URL可以被认为是指向互联网资源的“指针”,通过URL可以获得互联网资源相关信息,包括获得URL的InputStream对象获取资源的信息,以及一个到URL所引用远程对象的连接URLConnection. URLConnection对象可以向