UDP发送端思路及代码:
//1,udpsocket服务。使用DatagramSocket对象。
DatagramSocket ds = new DatagramSocket(8888);
//2,将要发送的数据封装到数据包中。
String str = "udp传输演示:哥们来了!";
//使用DatagramPacket将数据封装到的该对象包中。
byte[] buf = str.getBytes();
DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10000);
//3,通过udp的socket服务将数据包发送出去。使用send方法。
ds.send(dp);
//4,关闭资源。
ds.close();
UDP接收端思路及代码:
//1,建立udp socket服务。
DatagramSocket ds = new DatagramSocket(10000);
//2,创建数据包。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3,使用接收方法将数据存储到数据包中。
ds.receive(dp);//阻塞式的。
//4,通过数据包对象的方法,解析其中的数据,比如,地址,端口,数据内容。
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String text = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+":"+port+":"+text);
//5,关闭资源。
ds.close();
TCP传输
Socket ServerSocket
建立客户端和服务器端
建立连接后,通过Socket中的IO流进行数据的传输
关闭socket
TCP客户端思路及代码:
//1创建客户端socket服务。
Socket socket = new Socket("192.168.1.100",10002);
//2获取socket流中的输出流。
OutputStream out = socket.getOutputStream();
//3使用输出流将指定的数据写出去。
out.write("tcp演示:哥们又来了!".getBytes());
//4关闭资源。
socket.close();
TCP服务端思路及代码:
//1创建服务端对象。
ServerSocket ss = new ServerSocket(10002);
//2,获取连接过来的客户端对象。
Socket s = ss.accept();//阻塞式.
String ip = s.getInetAddress().getHostAddress();
//3,通过socket对象获取输入流,要读取客户端发来的数据
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String(buf,0,len);
System.out.println(ip+":"+text);
//4关闭资源。关客户端,关服务端。
s.close();
ss.close();作者: 二月的雨 时间: 2014-11-23 22:15 本帖最后由 二月的雨 于 2014-11-23 22:31 编辑
从楼主的提问来看,问的是TCP/IP和UDP的协议区别。因此感觉楼主可能有点不太清楚TCP、IP、UDP的关系。 楼主可以简单的这么理解。IP是一种协议,可以理解为寻址协议,用来确认对话双方的位置。通过IP协议寻址之后可以 用TCP或者UDP的方式来进行传输。
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。提供了无连接的数据报服务;因此具有较好的实时性,工作效率较TCP协议高。
比如QQ,登录时因为交互数据量小而且需要可靠性,因此用TCP协议。 QQ登录之后双方进行会话,用UDP就能满足要求了,这样可以提高效率。平常我们会发现有时候QQ聊天的内容,我们这边发出去了,但是对方没有收到,就是因为用的UDP协议。当然虽然用udp协议,但是QQ还是会在udp协议的基础上自己做些验证操作来保证一定的可靠性。 通过抓包工具我们可以看到QQ用的是OICQ协议,也就是QQ自己定义的协议。
实际开发中,有时候我们需要对原来的协议标准进行一定的扩展,比如飞信的通信协议就是对SIP协议进行了一定扩展来实现传输的。