UDP/IP+BIO


java对UDP/IP方式的网络数据传输同样采用Socket机制,只是UDP/IP下Socket没有建立连接的要求,由于UDP/IP是无连接的,因此无法进行双向的通信,这也就要求如果要双方通信的话,必须两端都成为UDPserver。在java中可以基于DatagramSocket 和 DatagramPacket来实现UDP/IP+BIO方式的系统间通信,DatagramSocket负责监听端口及读写数据。DatagramPacket作为数据流对象进行传输。

package org.cui.udpip.bio;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
*
* @author clin
*
*/
public class UDPServerUser01 {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
DatagramSocket socket = new DatagramSocket(7777);
DatagramPacket receivepack = new DatagramPacket(new byte[1024] , 1024) ;
socket.receive(receivepack) ;
System.out.println("你接受的内容是:"+new String(receivepack.getData(),0,receivepack.getLength()) ) ;
String str = "my name clin ." ;
DatagramPacket sendpack = new DatagramPacket(str.getBytes() , str.length() ,InetAddress.getLocalHost() ,9000) ;
socket.send(sendpack) ;
System.out.println("你發送的內容是:"+str);

}
}



package org.cui.udpip.bio;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
*
* @author clin
*
*/
public class UDPServerUser02 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
DatagramSocket socket = new DatagramSocket(8888) ;
String str = "hello my name is user01 what's your name" ;
System.out.println("你發送的信息:"+str);
DatagramPacket sendpack = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getLocalHost(), 3000 ) ;
socket.send(sendpack) ;
DatagramPacket receivepack = new DatagramPacket(new byte[1024], 1024) ;
socket.receive(receivepack) ;
System.out.println("你接受的内容是:"+new String(receivepack.getData(),0,receivepack.getLength()) ) ;
}

}

你可能感兴趣的:(java,socket,bio,udp/ip)