我的java程序要充当客户端,通过udp协议向服务器发送简单数据。由于我以前一直用tcp协议,所以有一些重要问题需要请教大家:
1.我看到一些例子上,建立客户端的DatagramSocket时候,也传递了一个int作为端口号参数,即:
DatagramSocket ds = new DatagramSocket(1000);
它是客户端,传递一个端口号有什么含义没有?抑或是别人的一种错误的操作?2.作为客户端,我每次只需要向服务器提交约1k左右的包,但是提交得非常频繁,我现在是每次建立一个DatagramSocket,发送一次后就close。我想这样的效率应该是比较低的。可以像tcp编程一样,我和服务器建立一个连接,然后总在这个连接上发包吗?如果不能,有什么办法避免这样非常频繁的建立DatagramSocket然后关闭DatagramSocket所需要的消耗吗?
1.我看到一些例子上,建立客户端的DatagramSocket时候,也传递了一个int作为端口号参数,即:
DatagramSocket ds = new DatagramSocket(1000);
它是客户端,传递一个端口号有什么含义没有?抑或是别人的一种错误的操作?2.作为客户端,我每次只需要向服务器提交约1k左右的包,但是提交得非常频繁,我现在是每次建立一个DatagramSocket,发送一次后就close。我想这样的效率应该是比较低的。可以像tcp编程一样,我和服务器建立一个连接,然后总在这个连接上发包吗?如果不能,有什么办法避免这样非常频繁的建立DatagramSocket然后关闭DatagramSocket所需要的消耗吗?
你在创建DatagramPacket的时候,已经指定了。这是UDP和TCP的区别。你看错了例子,或者本身例子就是错的
谢谢你的回答。但是:
如果老是用它,它是否也会和tcp连接一样,会意外地关闭或其它异常呢?就是说,怎样知道这个DatagramSocket是可用的呢?