Android TCP 和 UDP

来源:互联网 发布:java接口压力测试工具 编辑:程序博客网 时间:2024/06/06 01:02

原创:kylin_zeng  http://blog.chinaunix.net/uid/23795897.html在此感谢mars 老师的帮助。转载请注明原创出处,尊重他人的劳动成果。有问题请加 Q群: 241359063  共同走向创业学习之旅。


1、创建TCP 的客户端:

点击(此处)折叠或打开

  1. package mars;

  2. import java.io.FileInputStream;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.io.OutputStreamWriter;
  6. import java.io.Writer;
  7. import java.net.Socket;

  8. public class TCPClient {
  9.     public static void main(String[] args) {
  10.         try {
  11.             //创建一个Socket对象,指定服务器端的IP地址和端口号
  12.             Socket socket = new Socket("192.168.1.104",4567);
  13.             //使用InputStream读取硬盘上的文件
  14.             InputStream inputStream = new FileInputStream("f://file/words.txt");
  15.             //从Socket当中得到OutputStream
  16.             OutputStream outputStream = socket.getOutputStream();
  17.             byte buffer [] = new byte[4*1024];
  18.             int temp = 0 ;
  19.             //将InputStream当中的数据取出,并写入到OutputStream当中
  20.             while((temp = inputStream.read(buffer)) != -1){
  21.                 outputStream.write(buffer, 0, temp);
  22.             }
  23.             outputStream.flush();
  24.         } catch (Exception e) {
  25.             // TODO Auto-generated catch block
  26.             e.printStackTrace();
  27.         }
  28.     }
  29. }
2、创建一个TCP 的服务 监听器 监听端口数据:


点击(此处)折叠或打开

  1. package mars.socket;

  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;

  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;

  9. public class SocketActivity extends Activity {
  10.     /** Called when the activity is first created. */
  11.     private Button startButton = null;
  12.     @Override
  13.     public void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.main);
  16.         startButton = (Button)findViewById(R.id.startListener);
  17.         startButton.setOnClickListener(new StartSocketListener());
  18.     }
  19.     
  20.     class StartSocketListener implements OnClickListener{

  21.         @Override
  22.         public void onClick(View v) {
  23.             new ServerThread().start();
  24.         }
  25.         
  26.     }
  27.     
  28.     class ServerThread extends Thread{
  29.         public void run(){
  30.             //声明一个ServerSocket对象
  31.             ServerSocket serverSocket = null;
  32.             try {
  33.                 //创建一个ServerSocket对象,并让这个Socket在4567端口监听
  34.                 serverSocket = new ServerSocket(4567);
  35.                 //调用ServerSocket的accept()方法,接受客户端所发送的请求,如果没有数据,则在此处阻塞。
  36.                 Socket socket = serverSocket.accept();

  37.                 //从Socket当中得到InputStream对象
  38.                 InputStream inputStream = socket.getInputStream();
  39.                 byte buffer [] = new byte[1024*4];
  40.                 int temp = 0;
  41.                 //从InputStream当中读取客户端所发送的数据
  42.                 while((temp = inputStream.read(buffer)) != -1){
  43.                     System.out.println(new String(buffer,0,temp));
  44.                 }
  45.             } catch (IOException e) {
  46.                 // TODO Auto-generated catch block
  47.                 e.printStackTrace();
  48.             }
  49.             finally{
  50.                 try {
  51.                     serverSocket.close();
  52.                 } catch (IOException e) {
  53.                     // TODO Auto-generated catch block
  54.                     e.printStackTrace();
  55.                 }
  56.             }
  57.         
  58.         }
  59.    }
    }


二、UDP :
1、创建客户端:

点击(此处)折叠或打开

  1. package mars;

  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;

  5. public class UDPClient {
  6.     public static void main(String[] args) {
  7.         try {
  8.             //首先创建一个DatagramSocket对象
  9.             DatagramSocket socket = new DatagramSocket(4567);
  10.             //创建一个InetAddree
  11.             InetAddress serverAddress = InetAddress.getByName("192.168.1.104");
  12.             String str = "hello";
  13.             byte data [] = str.getBytes();
  14.             //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
  15.             DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);
  16.             //调用socket对象的send方法,发送数据
  17.             socket.send(packet);
  18.         } catch (Exception e) {
  19.             // TODO Auto-generated catch block
  20.             e.printStackTrace();
  21.         }
  22.     }
  23. }
2、创建UDP 的服务端,监听端口:

点击(此处)折叠或打开

  1. package mars.socket;

  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;

  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;

  9. public class SocketActivity extends Activity {
  10.     /** Called when the activity is first created. */
  11.     private Button startButton = null;
  12.     @Override
  13.     public void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.main);
  16.         startButton = (Button)findViewById(R.id.startListener);
  17.         startButton.setOnClickListener(new StartSocketListener());
  18.     }
  19.     
  20.     class StartSocketListener implements OnClickListener{

  21.         @Override
  22.         public void onClick(View v) {
  23.             new ServerThread().start();
  24.         }
  25.         
  26.     }
  27.     
  28.     class ServerThread extends Thread{
  29.         
  30.         public void run(){
  31.             try {
  32.                 //创建一个DatagramSocket对象,并指定监听的端口号
  33.                 DatagramSocket socket = new DatagramSocket(4567);
  34.                 byte data [] = new byte[1024];
  35.                 //创建一个空的DatagramPacket对象
  36.                 DatagramPacket packet = new DatagramPacket(data,data.length);
  37.                 //使用receive方法接收客户端所发送的数据,如果没有数据,则在此处监听。
  38.                 socket.receive(packet);
  39.                 String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
  40.                 System.out.println("result--->" + result);
  41.             } catch (Exception e) {
  42.                 // TODO Auto-generated catch block
  43.                 e.printStackTrace();
  44.             }
  45.         }
  46.     }
  47. }

mars视频教程ppt和代码01_24_ppt_src.zip



<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(5) | 评论(0) | 转发(0) |
1

上一篇:android wifi 的开启,关闭,查询等。

下一篇:android service 用法

相关热门文章
  • Android网络开发之HttpURLConn...
  • urlConnectoin.getInputStream...
  • [2014-12-18]安玩游戏合集...
  • Android Make脚本的简记
  • android学习之spinner
  • Android之开发环境搭建
  • Android自定义View的实现...
  • AndroidManifest.xml配置文件...
  • Android源码调试方法详解...
  • 不用vs和cygwin!Eclipse+cdt...
  • 请问Linux默认shell的是什么 ...
  • 谁能够帮我解决LINUX 2.6 10...
  • 现在的博客积分不会更新了吗?...
  • shell怎么读取网页内容...
  • ssh等待连接的超时问题...
给主人留下些什么吧!~~
原创粉丝点击