码迷,mamicode.com
首页 > 其他好文 > 详细

客户咨询<基于UDP协议的Socket编程(数据报式套接字)>

时间:2015-03-12 19:28:08      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

1、DatagramPacket类的构造方法

技术分享

2、DatagramSocket类的构造方法

技术分享

3、DatagramSocket类常用方法

技术分享

4、服务端

 package com.ljb.app.datagram;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
import java.net.SocketException;
/**
 * 客户咨询服务端
 * @author LJB
 * @version 2015年3月12日
 */
public class AskServer {
 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   // 创建接收方套接字(服务器),并绑定端口号
   DatagramSocket ds = new DatagramSocket(8800);
   // 确定数据包接收的数据的数组的大小
   byte[] buf = new byte[1024];
   
   // 创建接收类型的数据包,数据将存储在数组中
   DatagramPacket dp = new DatagramPacket(buf,buf.length);
   
   // 通过套接字接收数据
   ds.receive(dp);
   
   // 解析发送方发送的数据
   String mess = new String(buf , 0 , dp.getLength());
   System.out.println("客户端说:" + mess);
   
   // 响应信息
   String reply = "您好,我在,请咨询。";
   byte[] buf2 = reply.getBytes();
   
   // 响应地址
   SocketAddress sa = dp.getSocketAddress();
   
   // 数据包
   DatagramPacket dp2 = new DatagramPacket(buf2 , buf2.length , sa);
   
   // 发送
   ds.send(dp2);
   
   // 释放资源
   ds.close();
  } catch (SocketException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  
 }
}

5、客户端

package com.ljb.app.datagram;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
 * 客户咨询客户端
 * @author LJB
 * @version 2015年3月12日
 */
public class AskClient {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // 确定发送给服务器的信息,服务器地址,端口
  String mess = "你好,我想咨询一个问题?";
  byte[] buf = mess.getBytes();
  
  InetAddress ia = null;
  try {
   ia = InetAddress.getByName("localhost");
  } catch (UnknownHostException e) {
   e.printStackTrace();
  }
  
  int port = 8800;
  
  // 创建数据包,发送指定长度的信息到指定服务器的指定端口
  DatagramPacket dp = new DatagramPacket(buf , buf.length , ia , port);
  
  // 创建套接字对象
  DatagramSocket ds = null;
  try {
   ds = new DatagramSocket();
  } catch (SocketException e) {
   e.printStackTrace();
  }
  
  // 发送数据包
  try {
   ds.send(dp);
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  // 创建接收数组
  byte[] buf2 = new byte[1024];
  
  // 创建接收数据包
  DatagramPacket dp2 = new DatagramPacket(buf2 , buf2.length);
  
  // 接收数据
  try {
   ds.receive(dp2);
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  // 解析接收到的数据
  String reply = new String(buf2 , 0 , dp2.getLength());
  System.out.println("服务器端说:" + reply);
  
  // 释放资源
  ds.close();
 }
}

运行结果:

服务端:

            客户端说:你好,我想咨询一个问题?

客户端:

            服务器端说:您好,我在,请咨询。

客户咨询<基于UDP协议的Socket编程(数据报式套接字)>

标签:

原文地址:http://my.oschina.net/u/2320342/blog/386309

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!