当前位置:首页 » 编程软件 » udp编程java

udp编程java

发布时间: 2022-12-18 05:26:49

java udp发送和接收端口问题

你是在同一台电脑上测试吧,那肯定不行的,因为一个端口只能给一个程序使用,而你发送要用到1000端口,接收又要用到1000端口,所以肯定是冲突的,但是你用2台电脑测试就不会了。同样,你先建一个1000端口的server,你再建一个1000端口的server同样会报错。ps:你在开了tomcat的情况下,开一个8080的server试试,一样会报错,这是常识。

Ⅱ 推荐关于UDP协议的Java编程的书

1.《零基础学Java电子教程》(机械工业出版社) ,Java程序设计教程(第2版)基础篇 机械工业出版社 , Java程序设计教程(第2版)进阶篇 机械工业出版社2.《JAVA编程思想》3.《锋利的jQuery》4. 《CSS实战手册.第2版》.(美)麦克法兰5.《Spring揭秘》这些书是我仔细研究过的书,讲解的通俗易懂,也很经典,具有代表性。受益匪浅

Ⅲ Java中基于UDP的非阻塞编程

configureBloging(false)
然后注册监视器,selector.open();
得到句柄;selectionKey key=(SelectionKey)selector.selected();

Ⅳ JAVA问题 UDP协议中的端口问题

在Java中操纵UDP

使用位于JDK中Java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。

在描述它们之前,必须了解位于同一个位置的InetAddress类。InetAddress实现了Java.io. Serializable接口,不允许继承。它用于描述和包装一个Internet IP地址,通过三个方法返回InetAddress实例:

getLocalhost():返回封装本地地址的实例。

getAllByName(String host):返回封装Host地址的InetAddress实例数组。

getByName(String host):返回一个封装Host地址的实例。其中,Host可以是域名或者是一个合法的IP地址。

DatagramSocket类用于创建接收和发送UDP的Socket实例。和Socket类依赖SocketImpl类一样,DatagramSocket类的实现也依靠专门为它设计的DatagramScoketImplFactory类。DatagramSocket类有3个构建器:

DatagramSocket():创建实例。这是个比较特殊的用法,通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。

DatagramSocket(int port):创建实例,并固定监听Port端口的报文。

DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。

值得注意的是,在创建DatagramSocket类实例时,如果端口已经被使用,会产生一个SocketException的异常抛出,并导致程序非法终止,这个异常应该注意捕获。DatagramSocket类最主要的方法有4个:

Receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。

Send(DatagramPacket d):发送报文d到目的地。

SetSoTimeout(int timeout):设置超时时间,单位为毫秒。

Close():关闭DatagramSocket。在应用程序退出的? 焙颍?ǔ;嶂鞫?头抛试矗?乇誗ocket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。

“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。

DatagramPacket类用于处理报文,它将Byte数组、目标地址、目标端口等数据包装成报文或者将报文拆卸成Byte数组。应用程序在产生数据包是应该注意,TCP/IP规定数据报文大小最多包含65507个,通常主机接收548个字节,但大多数平台能够支持8192字节大小的报文。DatagramPacket类的构建器共有4个:

DatagramPacket(byte[] buf, int length, InetAddress addr, int port):从Buf数组中,取出Length长的数据创建数据包对象,目标是Addr地址,Port端口。

DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port):从Buf数组中,取出Offset开始的、Length长的数据创建数据包对象,目标是Addr地址,Port端口。

DatagramPacket(byte[] buf, int offset, int length):将数据包中从Offset开始、Length长的数据装进Buf数组。

DatagramPacket(byte[] buf, int length):将数据包中Length长的数据装进Buf数组。

DatagramPacket类最重要的方法就是getData()了,它从实例中取得报文的Byte数组编码。

Ⅳ Java网络编程基本概念是什么

1、Java网络编程基本概念——主机的网络层


主机网络层定义特定网络接口(如以太网或WiFi天线)如何通过物理连接将IP数据报发送到本地网络或世界其他地方。在主机网络层中,连接不同计算机的硬件部分(电缆、光纤、无线电波或烟雾信号)有时被称为网络的物理层。Java程序员不需要担心这一层,除非出现错误,例如计算机后面的插头脱落或有人切断了您与外部世界之间的T-1线。换句话说,Java将永远看不到物理层。


2、Java网络编程基本概念——网络层


Internet层的下一层是主机网络层,这是Java程序员需要考虑的第一层。因特网层协议定义了数据位和字节如何组织成更大的组,称为包,也定义了不同计算机互相查找的寻址机制。Internet Protocol (IP)是世界上使用最广泛的Internet层协议,也是Java唯一了解的Internet层协议。


因特网协议基本上是两种协议:IPV4使用32位地址,IPV6使用128位地址,并增加了技术特性来帮助路由。这是两种完全不同的网络协议,如果没有特殊的网关/隧道协议,它们甚至不能在同一网络上互操作,但是Java向您隐藏了几乎所有这些差异。


除了路由和寻址之外,因特网层的第二个作用是使不同类型的主机网络层能够彼此对话。因特网路由器在WiFi和以太网、以太网和DSL、DSL和光纤往返协议之间进行交换。没有因特网层或类似的分层,每台计算机只能与同一类型网络上的其他计算机通信。因特网层负责使用适当的协议将异类网络彼此连接起来。


3、Java网络编程基本概念——传输层


原始数据报有一些缺点。最明显的缺点是无法保证可靠的传输,即使可以保证,也可能在传输过程中被损坏。头检查只能检测头中的损坏,而不能检测数据报的数据部分。最后,即使数据报没有损坏地到达了它的目的地,它也可能不能按照发送的顺序到达。


传输层负责确保按发送的顺序接收数据包,确保没有数据丢失或销毁。如果数据包丢失,传输层要求发送方重新传输该数据包。为此,IP网络向每个数据报添加了一个额外的头,其中包含更多信息。


这个级别有两个主要协议。第一个是传输控制协议(TCP),这是一个昂贵的协议,允许丢失或损坏的数据按照发送顺序重新传输。第二个协议是用户数据报协议(User Datagram Protocol, UDP),它允许接收方检测损坏的数据包,而不保证它们按照正确的顺序发送(或者根本不发送)。然而,UDP通常比TCP快。TCP被称为可靠协议。UDP是不可靠的。


4、Java网络编程基本概念——应用程序层


向用户交付数据的层称为应用层。以下三个层定义如何将数据从一台计算机传输到另一台计算机。应用层决定数据传输后的操作。有HTTP为用户Web, SMTP, POP, IMAP为用户电子邮件;FSP, TFTP用于文件传输,NFS用于文件访问;文件共享使用Gnutella和BitTorrent;会话发起协议(SIP)和Skype用于语音通信。此外,您的程序可以在必要时定义自己的应用程序级协议。(页面)


5、Java网络编程基本概念——IP、TCP、UDP


IP被设计成允许任意两点之间有多条路由,绕过损坏的路由器来路由数据包。由于两点之间有多条路由,而且由于网络流量或其他因素,它们之间的最短路径可能会随着时间而变化,因此构成特定数据流的数据包可能不会走同一条路由。即使它们全部到达,也可能不是按照它们被发送的顺序到达的。为了改进这一基本机制,TCP被放置在IP上,以便连接的两端可以确认收到的IP数据包,并请求重传丢失或损坏的数据包。此外,TCP允许接收端上的数据包按照发送的顺序重新分组。


然而,TCP有很多开销。因此,如果单个数据包的丢失不会完全破坏数据,那么可以使用UDP发送数据包,而不需要TCP提供的保证。UDP是一种不可靠的协议。它不能保证信息包将到达它们的目的地,或者它们将以它们被发送的相同顺序到达。


6、Java网络编程基本概念——IP地址和域名


IPv4网络上的每台计算机都有一个4字节的数字ID。通常在一个点上以四段格式写,比如192.1.32.90,每个数字是一个无符号字节,范围从0到255。IPv4网络上的每台计算机都有一个唯一的四段地址。当数据通过网络传输时,包的报头包括要发送到的机器的地址(目的地址)和要发送到的机器的地址(源地址)。路由上的路由器通过检查目的地址来选择发送包的最佳路径。包含源地址是为了让收件人知道该对谁进行回复。


虽然计算机可以很容易地处理数字,但人类并不擅长记住它们。因此,域名系统(DNS)被开发出来,用来将容易记住的主机名(如www.12345.com)转换成数字互联网地址(如208.201.243.99)。当Java程序访问网络时,它们需要同时处理数字地址和相应的主机名。这些方法由java.net.InetAddress类提供。


7、Java网络编程基本概念——港口


如果每台计算机一次只做一件事,地址就足够了。但是现代计算机同时做许多不同的事情。电子邮件需要与FTP请求分开,而FTP请求也需要与Web通信分开。这是通过端口完成的。具有IP地址的每台计算机有数千个逻辑端口(确切地说,每个传输层协议有65,535个端口)。这些只是计算机内存中的抽象,不代表任何物理对象,不像USB端口。每个端口在1到65535之间进行数字标识。每个端口可以分配给一个特定的服务。


8、Java网络编程基本概念——一个防火墙


在互联网上有一些顽皮的人。要排除它们,通常需要在本地网络上设置一个接入点,并检查进出该接入点的所有流量。位于因特网和本地网络之间的一些硬件和软件会检查所有输入和输出的数据,以确保它是防火墙。防火墙通常是路由器的一部分,它将本地网络连接到更大的因特网,并可以执行其他任务,如网络地址转换。另外,防火墙可以是单独的机器。防火墙仍然主要负责检查进出其网络接口的数据包,根据一组规则接收或拒绝数据包。


本篇《什么是Java网络编程基本概念?看完这篇文章你一定可以明白》到这里就已经结束了,小编一直认为,某一个编程软件受欢迎是有一定原因的,首先吸引人的一定是其功能,环球网校的小编祝您java学习之路顺利,如果你还想知道更多java知识,也可以点击本站的其他文章进行学习。

Ⅵ java网络编程:程序问题,接收不到数据

这是java网络编程里的UDPServer和UDPClient之间简单通信程序啊,等等我看看你的程序再说

你想要的是不是这种效果?


import java.net.*;


class UdpSend{

public static void main(String[] args)throws Exception{

//1.创建udp服务,通过DatagramSocket对象

DatagramSocket ds = new DatagramSocket(8888);//---这儿的端口号不要和UdpRece的一样


//2.确定数据,并封装成数据包。

//DatagramPacket(byte[] buf, int length, InetAddress address,


int port)

//构造数据报包,用来将长度为 length 的包发送到指定主机上的


指定端口号。

byte[] buf = "udp shu ju lai le".getBytes();

DatagramPacket dp =

new DatagramPacket(buf,buf.length,InetAddress.getByName


("169.254.200.14"),10000);//----这儿的端口号保持与UdpRece一样


//3.通过Socket服务,将已有的数据包发送出去。通过send方法。

ds.send(dp);


//4.关闭资源

ds.close();

}

}

最后想说,先运行UdpRece 再运行UdpSend,反过来UdpSend要运行2遍

Ⅶ java中如何检测本机指定的UDP服务端口是否被占用并且自动分配一个可用udp端口;

1.端口占用编译器会报错,可以从错误看出来是不是端口被占用。没有专门的检测工具和方法
2.DatagramSocket(在Java中使用UDP协议编程的相关类)
用于接收和发送UDP的Socket实例。该类有3个构造函数:
DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。
DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端
DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。
DatagramSocket具有的主要方法如下:
1)receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。

2)send(DatagramPacket dp):发送报文dp到目的地。

3)setSoTimeout(int timeout):设置超时时间,单位为毫秒。

4)close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。
希望对您有帮助谢谢

Ⅷ java 中UDP网络编程问题

new DatagramSocket();这个没设置端口号,

热点内容
压缩机工作原理图 发布:2025-07-13 18:10:15 浏览:39
黑暗追求者安卓怎么联机 发布:2025-07-13 18:10:07 浏览:617
北大保安自学编程 发布:2025-07-13 18:09:58 浏览:858
java递归排列 发布:2025-07-13 18:02:43 浏览:473
轻量云服务器如何换成d盘 发布:2025-07-13 17:58:45 浏览:931
重置腾讯云服务器时间 发布:2025-07-13 17:54:55 浏览:326
aes256java加密 发布:2025-07-13 17:54:46 浏览:710
mc开服务器的电脑 发布:2025-07-13 17:46:47 浏览:195
事件linux 发布:2025-07-13 17:45:51 浏览:143
mssqlpython 发布:2025-07-13 17:24:34 浏览:469