Android网络编程之UDP通信----简单客户端与服务端通信

UDP用的相对来说比较少,但是最近在一个小项目中也在使用。

主要是发送简单的字符给到服务端,接收服务端发送过来的数据,然后再做相应的处理。感觉使用发送端和接收端更加贴切。

UDP:User Datagram Protocol,用户数据报协议。


使用UDP通信的步骤:

1.服务端(接收端)

1)使用DatagramSocket(int port)创建一个指定端口的数据报套接字。

2)使用DatagramPackage(byte[] buf,int length)创建一个数据报来接收UDP包。

3)使用DatagramSocket的receiver方法来接收UDP包。

4)关闭数据报套接字。


2.客户端(发送端)

1)使用DatagramSocket创建一个数据报套接字。

2)使用DatagramPackage(byte[] buf,int length,InetAddress address,int port)创建一个要发送的UDP包。

3)使用DatagramSocket的send方法来发送UDP包。

4)关闭数据报套接字。


其实步骤比较简单:发送端使用DatagramSocket的send发送DatagramPackage,接收端使用DatagramSocket的receiver接收DatagramPackage。


实例:

服务端(接收端),Java程序,运行在PC上。

public class MainServer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		byte[] msg = new byte[520];
		DatagramPacket dp = new DatagramPacket(msg, msg.length);
		DatagramSocket ds = null;
		try {
			ds = new DatagramSocket(28001);
			try {
				ds.receive(dp);
				String recerverStr = new String(dp.getData());
				System.out.println("zhangmq receiver : "+recerverStr);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			if(ds != null){
				ds.close();
			}
		}
	}

}


客户端(发送端),Android程序,运行在手机上。

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		new Thread() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				String str = "zhou hao yu shi sha bi ~";
				DatagramSocket ds = null;
				try {
					ds = new DatagramSocket();
					try {
						InetAddress serverAddr = InetAddress
								.getByName("172.16.11.152");
						DatagramPacket dp = new DatagramPacket(str.getBytes(),
								str.length(), serverAddr, 28001);
						try {
							ds.send(dp);
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					} catch (UnknownHostException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				} catch (SocketException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} finally {
					if (ds != null) {
						ds.close();
					}
				}

			}

		}.start();

	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值