Android Socket编程(udp)初探

Android Socket编程(udp)初探,第1张

概述前言昨天刚把sockettcp编程简单讲解了,今天趁热打铁把udp编程也讲一下。一个是为了提醒自己,坚持下去,另外还是为了提升技术打下基础。如果讲的有什么不对的还请各位指正。首先先上图,俗话说nopicsayaxx其次客户端代码(线程中)publicclassUdpClientThreadexten 前言

昨天刚把socket tcp编程简单讲解了,今天趁热打铁把udp编程也讲一下。一个是为了提醒自己,坚持下去,另外还是为了提升技术打下基础。如果讲的有什么不对的还请各位指正。

首先

先上图,俗话说no pic say a xx

其次

客户端代码(线程中)

public class UdpClIEntThread extends Thread {//IP地址private String mAddress;//端口private int port;//发送内容private String msg;private Handler mHandler;public UdpClIEntThread(Handler handler, String address, int port, String msg) {  this.mHandler = handler;  this.mAddress = address;  this.port = port;  this.msg = msg;}@OverrIDepublic voID run() {  super.run();  sendSocket();}/** * 设置 */private voID sendSocket() {  byte[] bytes = msg.getBytes();  try {      /*******************发送数据***********************/      InetAddress address = InetAddress.getByname(mAddress);      //1.构造数据包      DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, port);      //2.创建数据报套接字并将其绑定到本地主机上的指定端口。      DatagramSocket socket = new DatagramSocket();      //3.从此套接字发送数据报包。      socket.send(packet);      /*******************接收数据***********************/      //1.构造 DatagramPacket,用来接收长度为 length 的数据包。      final byte[] bytes1 = new byte[1024];      DatagramPacket receiverPacket = new DatagramPacket(bytes1, bytes1.length);      socket.receive(receiverPacket);      sendMsg(0,new String(bytes1, 0, bytes1.length));      socket.close();  } catch (UnkNownHostException e) {      e.printstacktrace();  } catch (SocketException e) {      e.printstacktrace();  } catch (IOException e) {      e.printstacktrace();  }}/** * 发送消息 */private voID sendMsg(int what, Object object) {  Message msg = new Message();  msg.what = what;  msg.obj = object;  mHandler.sendMessage(msg); } }

__说明:__这里的封装和tcp中的一样,就是换一下参数和包装类,代码中的解释都比较清楚。

客户端(使用)

public class UdpClIEntActivity extends AppCompatActivity  implements VIEw.OnClickListener {button mBtnSend;String mAddress = "192.168.0.197";int port = 12306;TextVIEw mTxtContent;EditText mEdtContent;@OverrIDeprotected voID onCreate(@Nullable Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentVIEw(R.layout.activity_udp_clIEnt);  initVIEw();}private voID initVIEw() {  mEdtContent = findVIEwByID(R.ID.edt_udp_content);  mBtnSend = findVIEwByID(R.ID.btn_udp_send);  mTxtContent = findVIEwByID(R.ID.txt_udp_content);  mBtnSend.setonClickListener(this);}@OverrIDepublic voID onClick(VIEw vIEw) {  switch (vIEw.getID()) {      case R.ID.btn_udp_send: {          UdpClIEntThread mThread = new UdpClIEntThread(mHandler, mAddress, port,                  mEdtContent.getText().toString());          mThread.start();          break;      }  }}/** * Handler */private Handler mHandler = new Handler(Looper.myLooper()) {  @OverrIDe  public voID handleMessage(Message msg) {      super.handleMessage(msg);      switch (msg.what) {          case 0: {              String content = (String) msg.obj;              mTxtContent.setText(content);              break;          }      }  }};}

__说明:__这里直接点击按钮调用线程使用即可,当然,也可以直接用线程池来构造参数。

服务端(代码)

public class UdpServer {/** * @param args */public static voID main(String[] args) {  while (true) {  	getMsg();  }}/** * 获取信息 */private static voID getMsg() {  try {  	byte[] buf = new byte[1024];  	// 一、接收数据  	// 1、创建接收数据的数据包  	DatagramPacket packet = new DatagramPacket(buf, buf.length);  	// 2.创建UPD 的 socket  	DatagramSocket socket = new DatagramSocket(12306);  	// 3、接收数据  	System.out.println("服务端开始监听!~~~~");  	socket.receive(packet);  	// 4、处理数据  	System.out.println("服务端:" + new String(buf, 0, buf.length));  	// 二、返回数据  	DatagramPacket packet2 = new DatagramPacket(buf, buf.length,  			packet.getAddress(), packet.getPort());  	socket.send(packet2);  	socket.close();  } catch (Exception e) {  	e.printstacktrace();  }}}
最后

唠叨一下,做事一定要善始善终,做人一定要诚信(ps:最近遇到了一个不诚信的公司,offer发了之后,第二天告诉我不用去了,问过原因之后,人事和老板助理回复还不一样,这样就有点好玩了,真的是越想越生气。尤其是对于我这种对诚信比较看重的人,真的是不能忍。特别痛恨那种答应别人却做不到的人,要不就别答应,要不就做到。我一般答应别人的事情,一定会做到,不管我要付出什么,起码我兑现了自己的承诺。)。发了一顿牢骚,还请各位看官见谅。

致谢

Android网络编程之–Socket编程

总结

以上是内存溢出为你收集整理的Android Socket编程(udp)初探全部内容,希望文章能够帮你解决Android Socket编程(udp)初探所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存