Java网络编程之简单UDP通信
UDP是一种基于不可靠连接的协议,它无法保证传输的数据能不丢失不重复到达,尽自己努力传输,但是不会重传,不需要建立连接,则它所需要的时间会很快。它是基于数据报为单位进行传输的,不想TCP是一种基于流进行传输的。在UDP中没有所谓的Socket和ServerSocket来区分一个是客户端一个是服务器端,相反在UDP中客户端和服务器端都是基于相同的DatagramSocket来进行传输的,区别在于使用的构造函数。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
//Discard以端口9,该服务器主要就是丢弃所有的数据
publicclass UDPDiscardClient {
//discard 的端口为9
privatestaticfinalint DEFAULT_PORT=9;
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
String hostname="localhost";
int port=DEFAULT_PORT;
try{
InetAddress server=InetAddress.getByName(hostname);
BufferedReader userIn=new BufferedReader(new InputStreamReader(System.in));
//创建UDP客户端
DatagramSocket client=new DatagramSocket();
while(true)
{
String inline=userIn.readLine();
if(inline.indexOf('.')!=-1)break;
byte[] data=inline.getBytes("UTF-8");
//数据报
DatagramPacket thepacket=new DatagramPacket(data,data.length,server,port);
client.send(thepacket);
}
client.close();
}catch(UnknownHostException e)
{
e.printStackTrace();
}catch(SocketException e)
{
e.printStackTrace();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
publicclass UDPDiscardServer {
privatefinalstaticint DEFAULT_PORT=9;
privatefinalstaticint MAX_PACKET_SIZE=65507;
publicstaticvoid main(String[] args) {
int port= DEFAULT_PORT;
byte[] buffer=newbyte[MAX_PACKET_SIZE];
try{
DatagramSocket server=new DatagramSocket(port);
DatagramPacket packet=new DatagramPacket(buffer,buffer.length);
while(true)
{
server.receive(packet);
String s=new String(packet.getData(),packet.getOffset(),packet.getLength(),"UTF-8");
System.out.println(packet.getAddress()+" at port:"
+packet.getPort()+ " says:\n"+s);
//设置以后需要接受的长度
packet.setLength(buffer.length);
}
}catch(SocketException e)
{
}catch(IOException e)
{
}
}
}
Java网络编程之简单UDP通信相关推荐
- 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信
如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...
- 使用java网络编程模拟简单网络即时通信
使用java网络编程模拟简单网络即时通信 通信流程图: 解析: 1.在上图中我们可以看出对于任何一个客户端,都由两部分构成,发送端和接收端(分别由两个线程来维系) 2.客户端在每一次请求链接时都会轮询 ...
- java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端
//郑州轻工业大学 //题号:实验四 第二题 //题目:使用基于UDP的网络编程方法,完成客户端和服务器间的聊天功能.要求图形界面. java网络编程作业 基于UDP简单聊天窗口,图形化界面,包含客户 ...
- Java网络编程学习——简单模拟在线聊天
Java网络编程学习--简单模拟在线聊天 学了java网络,也是该做个小案例来巩固一下了. 本次案例将使用UDP和多线程模拟即时聊天,简单练练手. 1.前提知识 需要知道简单的IO流操作,以及简单的U ...
- Java网络编程以及简单的聊天程序
网络编程技术是互联网技术中的主流编程技术之一,懂的一些基本的操作是非常必要的.这章主要讲解网络编程,UDP和Socket编程,以及使用Socket做一个简单的聊天软件. 全部代码下载:链接 1.网络编 ...
- Java核心类库之(网络编程:网络编程入门、UDP通信程序、TCP通信程序)
目录 1 网络编程入门 1.1 网络编程概述 1.2 网络编程三要素 1.3 IP地址 1.4 InetAddress的使用 1.5 端口 1.6 协议 2 UDP通信程序 2.1 UDP通信原理 2 ...
- 网络编程传输层——UDP通信
何为传输层? 在物理层.数据链路层.网络层解决了主机和主机之间能够发送接收数据,但是在计算机网络中,主机的通信主体还是进程,而传输层则解决应用进程的通信,所谓传输层协议也是端对端协议. ...
- Qt网络编程之搭建Udp通信【单播、组播、广播】
由于项目的环境实在局域网内进行传输,所以采用了UDP通信.为此记录一下. UDP概念 UDP(用户数据报协议)是一个简单的面向数据报的传输层协议.提供的是非面向连接的.不可靠的数据流传输.UDP不提供 ...
- JAVA 网络编程(5) SOCKET UDP 单播和组播,以及组播其他机器收不到报文的解决方法
UDP既可以单播也可以组播 一,单播 单播的过程为 发送方: InetAddress destAddr = InetAddress.getByName("192.168.4.199" ...
最新文章
- 30 个 php 操作 redis 常用方法代码例子
- 黑入苹果、特斯拉竟如此容易!这位鬼才的攻击方法火了!
- VTK:几何对象之OpenVRTessellatedBoxSource
- 计算机前端学哪些好学,Web前端能干什么工作,好学吗
- 2、Fiddler工作原理
- 红帽专家谈 Ceph 与 Gluster 开源存储路线
- 「mac软件教程」:在 Mac 上免费减小 PDF 文件大小
- EXCEL 跨列居中
- Java知识系统回顾整理01基础01第一个程序05Eclipse中运行Java程序
- 从2013年下半年始计算机等级考试大纲有重要调整
- Monash call:概述生物特征识别
- tensorflow的GPU加速计算
- linux编辑状态a,linux 操作
- 元宇宙”成时下热点 中国古人是如何认识“宇宙”的?
- html如何实现空格?
- 乾 乾为天 乾上乾下
- 这个世界,总是被设计得刚刚好?人类或许只是被设定的一个程序
- 使用JavaWeb实现多多自走棋羁绊生成
- linux我的世界乱码,我的世界附魔台文字翻译成普通文字 附魔台文字乱码解决办法...
- 计算机仿真保密审查必须盖章,计算机仿真杂志