android网络通信之socket编程
来源:互联网 发布:怎么看淘宝宝贝销量 编辑:程序博客网 时间:2024/06/05 09:34
<span style="color:#333333;">/* * * android学习之 Socket编程 * UDP传输协议: 类似邮递,以数据包的形式发送。速度比较快,但目标是否正确接收,不负责验证。 * 以DatagramSocket/DatagramPackages处理。 * TCP传输协议:准确度较高,能够验证数据传输是否成功。 * 以ServerSocket/InputStream处理。 * 以TCP协议为例实现过程中遇到的问题 * * 第一种测试:Tcp通信 */ /*服务器端*/package com.linxiaosheng.javanet;import java.io.IOException;import java.io.InputStream;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import java.util.Enumeration;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.linxiaosheng.R;public class ServerActivity extends Activity{private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(R.layout.server);button=(Button)findViewById(R.id.button1);button.setOnClickListener(new ButtonClickListener());}class ButtonClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println(GetHostIp()); Thread thread=new Thread(new MyThread());thread.start();}}class MyThread implements Runnable{@Overridepublic void run() {// TODO Auto-generated method stubServerSocket serverSocket=null;try {serverSocket=new ServerSocket(8081);Socket socket=serverSocket.accept();InputStream inputStream=socket.getInputStream();byte[] b=new byte[1024*4];int num=0;while((num=inputStream.read(b))!=-1){System.out.println(new String(b,0,num));}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {serverSocket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}//用于获取android机ippublic String GetHostIp() { try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> ipAddr = intf.getInetAddresses(); ipAddr .hasMoreElements();) { InetAddress inetAddress = ipAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress(); } } } } catch (Exception e) { } return null; } }</span>
package com.linxiaosheng.net;/*客户端*/import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class TCP {public static void main(String args[]){Socket socket=null;InputStream is=null;OutputStream os=null;try {socket=new Socket("192.168.191.2", 8081);is=new FileInputStream(new File("./bin/noteSendList.jsp"));os=socket.getOutputStream();byte[] b=new byte[4*1024];int num=0;while((num=is.read(b))!=-1){os.write(b, 0, num);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {os.flush();os.close();is.close();socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
/*第二种通信:UDP*/<span style="white-space:pre"></span> package com.linxiaosheng.javanet;import java.io.IOException;import java.io.InputStream;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import java.util.Enumeration;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.linxiaosheng.R;/*服务器端*/public class ServerActivity extends Activity{private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(R.layout.server);button=(Button)findViewById(R.id.button1);button.setOnClickListener(new ButtonClickListener());}class ButtonClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println(GetHostIp()); Thread thread=new Thread(new MyThread());thread.start();}}class MyThread implements Runnable{@Overridepublic void run() {// TODO Auto-generated method stubDatagramSocket socket=null;try {socket=new DatagramSocket(8082);byte b[]=new byte[1024];DatagramPacket packet=new DatagramPacket(b, b.length);socket.receive(packet);System.out.println(packet.getLength());System.out.println(new String(b).toString());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{socket.close();}}}//用于获取android机ippublic String GetHostIp() { try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> ipAddr = intf.getInetAddresses(); ipAddr .hasMoreElements();) { InetAddress inetAddress = ipAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress(); } } } } catch (Exception e) { } return null; } }
/*客户端*/<span style="white-space:pre"></span> package com.linxiaosheng.net;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class UDP {public static void main(String args[]){//创建一个inetaddressInetAddress laddr=null;//创建datagramsocketDatagramSocket datagramSocket=null;InputStream is=null;try {laddr = InetAddress.getByName("192.168.191.2");//这里不能默认绑定地址,否则会出现java.net.BindException: Cannot assign requested address的错误//目标地址要绑定在数据包datagramSocket=new DatagramSocket(8082);//读取文件is=new FileInputStream(new File("./bin/noteSendList.jsp"));byte[] b=new byte[1024];int len=0;while((len=is.read(b))!=-1){DatagramPacket packet=new DatagramPacket(b,len,laddr,8082);datagramSocket.send(packet);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {//关闭流is.close();//关闭socketdatagramSocket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
0 0
- Android网络编程之Socket通信
- Android网络编程之Socket通信
- android网络通信之socket编程
- 网络通信之Socket编程
- Android网络编程之Socket通信实现简单聊天室
- Android网络通信之Socket
- Android网络通信之Socket
- Android网络通信之-Socket通信
- Java网络编程之Socket通信
- Java通信之Socket网络编程
- Windows网络编程之Socket通信
- Java网络通信之Socket编程
- 网络编程之Socket通信(Java)
- android中的网络通信(一) socket编程
- Android网络编程的Socket通信总结
- android之socket网络编程
- Android网络编程之Socket
- Android网络通信----1.Socket编程之简单客户端与服务器端通信
- 判断一个字符串是否有回文
- 在C语言中的字符串
- ASIHTTPRequest类库简介和使用说明
- MatLab GUI 数据传递
- leetCode(16):Binary Tree Level Order Traversal
- android网络通信之socket编程
- Matlab的GUI参数传递方式
- 递归
- 【番外篇】关于对冲的一点想法
- POJ 1703
- Java 构造器(定义,作用,原理)
- Uva - 11134 - Fabled Rooks
- hdu3833YY's new problem
- javascript call和apply