Java通信编程中调用UDP协议与TCP协议之间的不同

UDP协议与TCP协议之间的区别不再分析,主要是分析一下这两个协议在Java通信编程中是如何被使用的。

首先介绍TCP,对于TCP,Java语言为它提供了良好的支持。建立TCP通信,首先需要构建服务器,并且得

到服务器的IP和端口号。

TCP协议下的Socket类:

java.net.Socket类代表客户端连接

java.net.ServerSocket类代表服务器端连接

Server:ServerSocket ss = new ServerSocket(5000); //创建服务器端的socket对象

Socket socket = ss.accept(); //监听连接

Client:  Socket socket = new Socket ("xxx.xxx.xxx.xxx", 5000); //创建客户端的Socket对象,xxx.xxx.xxx.xxx代表服

务器的IP

构建输入输出:

输入:InputStream is = socket.getInputStream(); //输入流,代表接收到的信息

is.read(buffer);

输出:OutputStream os = socket socket.getOutputStream(); //输出流,代表发送出去的信息

os.write("Welcome".getBytes()); //以字节传输

关闭资源:

is.close();

os.close();

socket.close();

具体实例:使用TCP/IP的套接字(Socket)进行通信

接下来介绍一下UDP

UDP建立连接的方式与TCP的方式不同,它只需要建立一个连接对象即可,不需要指定服务器的IP和端口号。

UDP协议下的Socket类:

java.net.DatagramSocket类既可以实现客户端连接,也可以实现服务器端连接。

java.net.DatagramPacket类实现对于传输的数据封装。在UDP协议下,无论是需要发送的数据还是需要接收的数

据都需要被处理成DatagramPacket类型的对象。

DatagramSocket ds = new DatagramScoket(); //建立连接, 如果发送端和接收端需要通信,那么在建立连接时需要监

听端口:DatagramSocket ds = new DatagramScoket(10010); InetAddress senderIP = revDp.getAddress(); int senderPort=rev

Dp.getPort(); //获得发送端的IP和端口号

构建输入输出

输出:

byte[] b = "Hello".getBytes();

InetAddress server = InetAddress.getByName("xxx.xxx.xxx.xxx"); //xxx.xxx.xxx.xxx为接收方的IP

DatagramPacket sendDp = new DatagramPacket(b,b.length,server,port); //port为接收方的端口号10010

ds.send(sendDp);

输入:

byte[] data = new byte[1024];

DatagramPacket revDp = new DatagramPacket(data, data.length);

ds.receive(revDp);

关闭资源:

ds.close()

Reference:Java TCP和UDP通信的使用

时间: 2024-10-26 03:21:31

Java通信编程中调用UDP协议与TCP协议之间的不同的相关文章

Java多线程编程中Future模式的详解<转>

Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下:关于其他多线程设计模式的地址如下:关于Master-Worker模式的详解: Java多线程编程中Master-Worker模式的详解关于Guarded Suspeionsion模式的详解: Java多线程编程中Guarded Suspeionsion模式

java并发编程中CountDownLatch和CyclicBarrier的使用

转自:http://blog.csdn.net/hbzyaxiu520/article/details/6183714 在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决? 如果是一个线程等待一个线程,则可以通过await()和notify()来实现: 如果是一个线程等待多个线程,则就可以使用CountDownLatch和CyclicBarrier来实现比较好的控制. 下面来详细描述下CountDownLatch的应用场景: 例如:百米赛跑:8名运动员同时

用java网络编程中的TCP方式上传文本文件及出现的小问题

自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端. 客户端: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStr

java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势

 java多线程创建方法http://blog.csdn.net/cjc211322/article/details/24999163  java创建多线程方法之间的区别http://blog.csdn.net/cjc211322/article/details/25000449 java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势

Java多线程编程中的lock使用源码详解

将做工程过程重要的代码段做个记录,如下的代码内容是关于Java多线程编程中的lock使用详解的代码,应该是对码农有帮助. import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.locks.Lock; import java.util.concurrent.l

http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)    建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络.HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80 (2)    Web

Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

iOS Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

Http协议与TCP协议简单理解(转)

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,