这两天被这个问题搞得很头疼,本来以为很简单的一个事,结果花了不少时间。

首先是服务器端,很简单的一个等待连接:

 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(一)相关推荐

  1. Android开发实例-Android平台手机新闻客户端

    Android开发实例<Android平台手机新闻客户端>是基于Android4.0及以上平台的一款新闻类手机应用,应用运行效果如下所示: Android开发实例课程主要介绍运行于Andr ...

  2. java 安卓项目案例_Java - 随笔分类 - android开发实例 - 博客园

    随笔分类 - Java 摘要:1.使用标准输入串对象System.inSystem.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字,这就很不适合,需要其他方法取得这样的 ...

  3. Android开发实例大全

    <Android开发实例大全> 基本信息 作者: 王东华 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173172 上架时间:2012-8-1 ...

  4. Android开发实例-自动生成题库的数独

    本系列文章主要介绍如何利用Android开发一个自动生成题目的数独游戏.涉及的知识和技术如下所示: 挖洞算法自动生成数独题目实现自定义View用于绘制数独盘数据库的基本操作 看着市场上千篇一律的数独应 ...

  5. Android开发实例之多点触控程序

    智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲 ...

  6. android开发实例之viewpager无限循环+自动滚动,Android ViewPager实现无限循环的实例...

    Android ViewPager实现无限循环的实例 ViewPager自身并不支持左右无限循环的功能,这里就提供一种方案让Android ViewPager实现左右无限循环的功能,这里记录下: 用于 ...

  7. android开发实例之minitwitter登录界面 代码,Android实例miniTwitter登录界面

    先上效果图: 布局分析:分成三个部分,该Activity是一个无标题的,设置无标题需要在setContentView之前设置,否则会报错: requestWindowFeature(Window.FE ...

  8. android开发实例便签,Android便签应用

    [实例简介] 一个简单实用的基于Android的便签小应用,界面美观,功能实用,几乎可以媲美商业小应用了,欢迎朋友下载体验或使用,有什么建议和批评,欢迎留言,谢谢合作! [实例截图] [核心代码] 便 ...

  9. android 闹钟提醒实现方法,Android开发实例之闹钟提醒

    本实例通过TimePickerDialog时间选择对话框让用户设置闹钟.并通过AlarmManager全局定时器在指定的时间启动闹钟Activity . 程序执行效果图: 实例代码: package ...

最新文章

  1. 作为程序员,你评估工作量留 buffer 吗?
  2. linux的mtd架构分析【转】
  3. OSChina 周三乱弹 ——相亲妹子说了一句让我肾疼的话
  4. web.config中配置字符串中特殊字符的处理
  5. vue-awesome-swiper:依赖于6.X版本Swiper时autoplay自动播放设置无效
  6. Java基础算法看这一篇就够了,简单全面一发入魂
  7. nas怎么做网站服务器,如何在群晖nas搭建自己的网站?
  8. jupyter更改默认浏览器的方法
  9. 如何使用命令提示符查找和打开文件
  10. nltk词性标注的涵义
  11. 新手如何在Git Hub上学习开源项目+社交
  12. python:defaultdict 对象
  13. 积分不等式证明的三种方法_20160416
  14. 基于java Web停车场管理系统源码和论文
  15. 小杨哥陷入打假风波,会变成下一个辛巴吗?
  16. iOS代码实现布局(三)—用CocoaPods导入第三方库Masonry
  17. AP侧,BP侧如何理解?
  18. 微信小程序开发必备 hellow word
  19. outlook2016查看服务器信息,Outlook2016/2019配置POP/IMAP/SMTP
  20. phpstorm无法打开设置的问题

热门文章

  1. python glob函数_python glob 模块 map函数
  2. 电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...
  3. 华为8545m5补全shell_华为hs8145v5 改华为界面和默认超密(一)
  4. 仅展示近三天的动态设置_抱歉,朋友仅展示最近三天的朋友圈
  5. linux系统电源时钟,linux电源管理的一些梳理
  6. java jframe 设置背景图片_JFrame如何设置背景图片
  7. java 安全 认证和授权,Java安全之认证与授权
  8. python中字典的value可以为任意对象_Python学习之字典的删改查操作
  9. 为什么使用@tablename起别名产生的sql语句不能用_10个简单步骤,完全理解SQL
  10. python做饼图出现重影_Matplotlib 绘制饼图解决文字重叠的方法