android开发实例-socket(一)
这两天被这个问题搞得很头疼,本来以为很简单的一个事,结果花了不少时间。
首先是服务器端,很简单的一个等待连接:
1 package com.mingrisoft; 2 3 import java.awt.BorderLayout; 4 import java.net.*; 5 import javax.swing.JFrame; 6 import javax.swing.JScrollPane; 7 import javax.swing.JTextArea; 8 9 public class ServerSocketFrame extends JFrame { 10 private JTextArea ta_info; 11 private ServerSocket server; // 声明ServerSocket对象 12 private Socket socket; // 声明Socket对象socket 13 14 public void getServer() { 15 try { 16 server = new ServerSocket(1992); // 实例化Socket对象 17 ta_info.append("服务器套接字已经创建成功\n"); // 输出信息 18 while (true) { // 如果套接字是连接状态 19 ta_info.append("等待客户机的连接......\n"); // 输出信息 20 socket = server.accept(); // 实例化Socket对象 21 ta_info.append("连接成功......\n"); 22 } 23 } catch (Exception e) { 24 e.printStackTrace(); // 输出异常信息 25 } 26 } 27 28 public static void main(String[] args) { // 主方法 29 ServerSocketFrame frame = new ServerSocketFrame(); // 创建本类对象 30 frame.setVisible(true); 31 frame.getServer(); // 调用方法 32 } 33 34 public ServerSocketFrame() { 35 super(); 36 setTitle("建立服务器套接字"); 37 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 38 setBounds(100, 100, 260, 167); 39 40 final JScrollPane scrollPane = new JScrollPane(); 41 getContentPane().add(scrollPane, BorderLayout.CENTER); 42 43 ta_info = new JTextArea(); 44 scrollPane.setViewportView(ta_info); 45 }46 }
android客户端:
1 package com.wxp.And255; 2 3 import java.io.IOException; 4 import java.net.InetSocketAddress; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7 import java.net.UnknownHostException; 8 9 import android.os.Bundle; 10 import android.os.Handler; 11 import android.os.StrictMode; 12 import android.annotation.SuppressLint; 13 import android.annotation.TargetApi; 14 import android.app.Activity; 15 import android.view.Menu; 16 import android.view.MenuItem; 17 import android.view.View; 18 import android.view.View.OnClickListener; 19 import android.widget.Button; 20 import android.widget.Toast; 21 import android.support.v4.app.NavUtils; 22 23 @TargetApi(9) 24 @SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi", "NewApi", "NewApi" }) 25 public class MainActivity extends Activity { 26 27 28 private Button con; 29 Socket socket; 30 InetSocketAddress isa=null; 31 @TargetApi(9) 32 @SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi" }) 33 public void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_main); 36 37 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 38 .detectDiskReads().detectDiskWrites().detectNetwork() 39 .penaltyLog().build()); 40 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 41 .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() 42 .build()); 43 44 con=(Button) findViewById(R.id.button1); 45 con.setOnClickListener(new OnClickListener() { 46 47 public void onClick(View v) { 48 49 Handler handler=new Handler(); 50 handler.post(socketThread); 51 52 } 53 }); 54 55 } 56 57 Runnable socketThread = new Runnable() { 58 public void run() { 59 60 try { 61 62 socket=new Socket("192.168.1.100",1992); 63 64 Toast.makeText(MainActivity.this, "ok", 3000).show(); 65 } catch (Exception e) { 66 // TODO Auto-generated catch block 67 e.printStackTrace(); 68 } 69 } 70 }; 71 72 90 @Override 91 public boolean onCreateOptionsMenu(Menu menu) { 92 getMenuInflater().inflate(R.menu.activity_main, menu); 93 return true; 94 } 95 96 97 }
注意这部分:
setContentView(R.layout.activity_main);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
.build());
我也搞不懂为什么,网上说socket连接要在另一个线程里面进行,我试了也没用,后来加了这段就有用了。
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView1"
android:layout_alignLeft="@+id/textView1"
android:text="con" />
</RelativeLayout>
暂时就这么多,详细使用下回分解。
转载于:https://www.cnblogs.com/whisper-xp/archive/2013/05/05/3060696.html
android开发实例-socket(一)相关推荐
- Android开发实例-Android平台手机新闻客户端
Android开发实例<Android平台手机新闻客户端>是基于Android4.0及以上平台的一款新闻类手机应用,应用运行效果如下所示: Android开发实例课程主要介绍运行于Andr ...
- java 安卓项目案例_Java - 随笔分类 - android开发实例 - 博客园
随笔分类 - Java 摘要:1.使用标准输入串对象System.inSystem.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字,这就很不适合,需要其他方法取得这样的 ...
- Android开发实例大全
<Android开发实例大全> 基本信息 作者: 王东华 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173172 上架时间:2012-8-1 ...
- Android开发实例-自动生成题库的数独
本系列文章主要介绍如何利用Android开发一个自动生成题目的数独游戏.涉及的知识和技术如下所示: 挖洞算法自动生成数独题目实现自定义View用于绘制数独盘数据库的基本操作 看着市场上千篇一律的数独应 ...
- Android开发实例之多点触控程序
智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲 ...
- android开发实例之viewpager无限循环+自动滚动,Android ViewPager实现无限循环的实例...
Android ViewPager实现无限循环的实例 ViewPager自身并不支持左右无限循环的功能,这里就提供一种方案让Android ViewPager实现左右无限循环的功能,这里记录下: 用于 ...
- android开发实例之minitwitter登录界面 代码,Android实例miniTwitter登录界面
先上效果图: 布局分析:分成三个部分,该Activity是一个无标题的,设置无标题需要在setContentView之前设置,否则会报错: requestWindowFeature(Window.FE ...
- android开发实例便签,Android便签应用
[实例简介] 一个简单实用的基于Android的便签小应用,界面美观,功能实用,几乎可以媲美商业小应用了,欢迎朋友下载体验或使用,有什么建议和批评,欢迎留言,谢谢合作! [实例截图] [核心代码] 便 ...
- android 闹钟提醒实现方法,Android开发实例之闹钟提醒
本实例通过TimePickerDialog时间选择对话框让用户设置闹钟.并通过AlarmManager全局定时器在指定的时间启动闹钟Activity . 程序执行效果图: 实例代码: package ...
最新文章
- 作为程序员,你评估工作量留 buffer 吗?
- linux的mtd架构分析【转】
- OSChina 周三乱弹 ——相亲妹子说了一句让我肾疼的话
- web.config中配置字符串中特殊字符的处理
- vue-awesome-swiper:依赖于6.X版本Swiper时autoplay自动播放设置无效
- Java基础算法看这一篇就够了,简单全面一发入魂
- nas怎么做网站服务器,如何在群晖nas搭建自己的网站?
- jupyter更改默认浏览器的方法
- 如何使用命令提示符查找和打开文件
- nltk词性标注的涵义
- 新手如何在Git Hub上学习开源项目+社交
- python:defaultdict 对象
- 积分不等式证明的三种方法_20160416
- 基于java Web停车场管理系统源码和论文
- 小杨哥陷入打假风波,会变成下一个辛巴吗?
- iOS代码实现布局(三)—用CocoaPods导入第三方库Masonry
- AP侧,BP侧如何理解?
- 微信小程序开发必备 hellow word
- outlook2016查看服务器信息,Outlook2016/2019配置POP/IMAP/SMTP
- phpstorm无法打开设置的问题
热门文章
- python glob函数_python glob 模块 map函数
- 电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...
- 华为8545m5补全shell_华为hs8145v5 改华为界面和默认超密(一)
- 仅展示近三天的动态设置_抱歉,朋友仅展示最近三天的朋友圈
- linux系统电源时钟,linux电源管理的一些梳理
- java jframe 设置背景图片_JFrame如何设置背景图片
- java 安全 认证和授权,Java安全之认证与授权
- python中字典的value可以为任意对象_Python学习之字典的删改查操作
- 为什么使用@tablename起别名产生的sql语句不能用_10个简单步骤,完全理解SQL
- python做饼图出现重影_Matplotlib 绘制饼图解决文字重叠的方法