- 浏览: 75303 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangkuichina:
此event坐标单位是什么呢?
android view的触摸事件坐标 -
coolismonster:
正好用得到 谢谢分享
android文件夹管理器 -
shim:
HashMap不是线程安全的,这么搞有风险
Gallery异步加载图片 -
Lifehopeness:
谢谢分享
android自定义带多选框的listview并避免出现自动选中另外选项 -
czbnlzd920706:
Acitivity中 44行 stopS ...
android音乐播放器拖放播放进度设计
android Socket实现简单聊天小程序
服务器端:
手机端:
注意几点:
1、添加网络权限
如果没添加,无法使用socket连接网络。
2、在新启线程中不要使用android系统UI界面
在EchoThrad的run()方法里面,有下面代码:
这里的handler.sendMessage(message);是发送一个消息给handler,然后handler根据消息弹出一个Toast显示连接失败。如果这里直接使用
会报如下错:
服务器端:
package org.hwq.echo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class TalkServer { public static void main(String[] args) throws IOException{ ServerSocket server = null; Socket client = null; BufferedReader in = null; PrintWriter out = null; try{ server = new ServerSocket(4700); client = server.accept(); out = new PrintWriter(client.getOutputStream()); in = new BufferedReader(new InputStreamReader(client.getInputStream())); String line = in.readLine(); while(!"bye".equals(line)){ System.out.println("client:"+line); out.println("echo:"+line); out.flush(); line = in.readLine(); } }catch (Exception e) { e.printStackTrace(); if(client !=null) client.close(); if(server != null) server.close(); } } }
手机端:
package org.hwq.cho; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class EchoActivity extends Activity implements OnClickListener { EditText show,msg; Button send; Handler handler; Socket client; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); handler = new MyHandler(); show = (EditText) findViewById(R.id.show); msg = (EditText) findViewById(R.id.msg); send = (Button) findViewById(R.id.send); send.setOnClickListener(this); } @Override public void onClick(View arg0) { String message = msg.getText().toString(); // System.out.println("msg:"+message); new EchoThread(EchoActivity.this,message).start(); } public class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { switch(msg.what){ case 1: Toast.makeText(EchoActivity.this, "建立连接失败", 0).show(); break; case 2: String message = (String) msg.obj; System.out.println("Handler:"+message); show.append("\n"+message); break; } } } private class EchoThread extends Thread{ private Context context; private String msg; EchoThread(Context context,String msg){ this.context = context; this.msg = msg; } public void run(){ if(client == null){ try { client = new Socket("192.168.1.102",4700); } catch (IOException e) { Message message = new Message(); message.what = 1; handler.sendMessage(message); } } System.out.println("建立连接"); try{ BufferedReader in; BufferedReader input; PrintWriter out; in = new BufferedReader(new InputStreamReader(client.getInputStream())); out = new PrintWriter(client.getOutputStream()); String line = msg; if(!"bye".equals(line)){ System.out.println("line:"+line); out.println(line); out.flush(); String echo = in.readLine(); System.out.println("server:"+echo); Message message = new Message(); message.obj = echo; message.what = 2; handler.sendMessage(message); } }catch (Exception e) { } } } }
注意几点:
1、添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
如果没添加,无法使用socket连接网络。
2、在新启线程中不要使用android系统UI界面
在EchoThrad的run()方法里面,有下面代码:
if(client == null){ try { client = new Socket("192.168.1.102",4700); } catch (IOException e) { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }
这里的handler.sendMessage(message);是发送一个消息给handler,然后handler根据消息弹出一个Toast显示连接失败。如果这里直接使用
Toast.makeText(EchoActivity.this, "建立连接失败", 0).show();
会报如下错:
Can't create handler inside thread that has not called Looper.prepare()
发表评论
-
DrawLayout几个注意点
2014-03-08 22:55 1470package com.example.navigationd ... -
layout_weight解惑
2014-02-20 13:25 0http://www.chess-ix.com/blog/th ... -
LayoutInflater注意事项
2014-02-20 10:52 0http://www.doubleencore.com/201 ... -
混淆掉Log.i输出
2013-12-26 15:42 0混淆配置文件加入 -assumenosideeffects c ... -
android TextView字体大小对应
2013-11-30 16:36 740设备信息:小米1 density=1.5, width=480 ... -
PopupWindow使用注意3点
2013-10-18 19:32 534使用PopupWindow注意点: ...... View v ... -
android 数据库同步
2013-10-14 13:35 1326package org.jerry; import or ... -
android singleTask几个注意点
2013-07-06 11:42 859android官网地址:http://developer.an ... -
转:WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法
2013-05-02 00:59 977文章原址:http://www.jcodecraeer.com ... -
Android onTouchEvent, onClick及onLongClick的调用机制
2013-04-28 02:21 0http://blog.csdn.net/ddna/artic ... -
Touch一些东西
2013-04-28 02:03 0package com.example.touchdemo; ... -
电话状态变化
2013-04-27 23:39 1841电话拨出,随后挂断 04- ... -
Toast重复利用
2013-04-26 00:10 1176package com.example.toastdemo; ... -
dp sp与px的相互转化
2013-04-23 01:19 0TextView.java /** * ... -
Android手机分辨率基础知识(DPI,DIP计算)
2013-04-22 22:57 0原文地址:http://blog.csdn.net/morui ... -
9.png NinePatchDrawable
2013-04-17 00:27 0地址: docs/tools/help/draw9patch. ... -
BaseAdapter
2013-04-16 09:43 0http://blog.csdn.net/pkxiuluo01 ... -
Android Intent的几种用法全面总结
2013-04-11 01:21 0Intent应该算是Android中特有的东西。你可以在Int ... -
Android中的Intent详细讲解
2013-04-11 01:18 0在一个Android应用中,主要是由四种组件组成的,这四种组件 ... -
PopupWindow
2013-04-26 00:11 1277PopupWindow,实质是使用WindowManager添 ...
相关推荐
在Android平台上实现一个简单的聊天应用程序,通常涉及到网络通信技术,特别是使用Socket编程。Socket是TCP/IP协议的一部分,它允许两台计算机(客户端和服务器)通过网络进行双向通信。在这个例子中,我们看到...
安卓Android基于Socket简易聊天项目开发(源码+运行截图+视频).zip 内容概要:安卓Android基于Socket简易聊天项目开发(源码+运行截图+视频).zip 适合人群:具备一定编程基础,准备毕业设计的同学 能学到什么:①如何...
一个简单的聊天系统项目,客户端+服务器模式,也就是cs模式,采用java开发语言,服务器端建立Socket监听端口,客户端连接socket发送数据,服务器端将接收到的聊天信息,推送到所有的客户端界面,实现了多人聊天的...
一个简单的聊天系统项目,客户端+服务器模式,也就是cs模式,采用java开发语言,服务器端建立Socket监听端口,客户端连接socket发送数据,服务器端将接收到的聊天信息,推送到所有的客户端界面,实现了多人聊天的...
【标题】小程序源码:仿微信聊天软件,Socket实现 在移动互联网时代,即时通讯(Instant Messaging, IM)应用已经成为日常生活中不可或缺的一部分。微信作为全球最大的社交平台之一,其聊天功能的设计与实现一直...
总之,通过Android的Service和BroadcastReceiver,我们可以实现一个简单的聊天应用,允许用户发送和接收消息。不过,这仅是一个基础的示例,实际的聊天应用通常还需要考虑更多功能,如用户认证、消息存储、群组聊天...
总之,Android Socket编程是构建网络应用程序的关键,涉及TCP和UDP协议的理解、Android平台的特殊限制以及实际应用中的优化策略。通过实践,开发者可以熟练掌握这一技术,构建高效稳定的网络通信系统。
SocketAndroid端是一个基于Android平台的客户端程序,主要利用Socket编程技术实现设备间的网络通信。在Android应用开发中,Socket通信是实现数据交换的一种基础方法,它允许应用通过TCP/IP协议与远程服务器进行双向...
在Android开发中,Socket通信是应用层与传输层之间的接口,用于实现设备间的网络通信。传统的Socket通信通常基于BIO(Blocking I/O)模型,但随着高性能和高并发需求的增加,开发者开始转向NIO(Non-blocking I/O)...
一个简单的聊天系统项目,客户端+服务器模式,也就是cs模式,采用java开发语言,服务器端建立Socket监听端口,客户端连接socket发送数据,服务器端将接收到的聊天信息,推送到所有的客户端界面,实现了多人聊天的...
通过这份报告,我们可以了解到构建一个基于Android的Socket聊天室应用涉及的技术点,包括Socket编程原理、服务器和客户端的工作流程,以及如何设计和实现聊天系统的各种功能。这对于理解和实践网络编程,尤其是...
"socket demo"通常是指一个示例程序,用于展示如何在Android应用中实现Socket通信的基本流程和功能。下面将详细介绍Android Socket的基本概念、使用场景、工作原理以及如何创建一个简单的Socket Demo。 1. Android ...
Android聊天小项目的实现涉及多个关键技术和流程,让我们一步步来解析这个过程。 1. **网络通信**:在这个项目中,手机客户端与服务端之间的通信是核心部分。通常,我们使用HTTP或HTTPS协议进行网络通信,但为了...
Android Socket客户端常用于即时聊天应用、文件传输、远程控制等场景,通过与服务器端的Socket通信实现功能。 综上所述,“android socketClient”涉及到的知识点主要包括Socket的基本概念、TCP/IP协议的理解、...
在Android平台上实现局域网聊天,通常涉及到网络通信技术,特别是使用UDP(User Datagram Protocol)协议。UDP是一种无连接的、不可靠的传输协议,它提供了较低的开销和较高的传输速度,非常适合实时性要求高的应用...
在这个"Unity手机android端多人聊天室demo"项目中,开发者利用Unity的潜力,构建了一个支持多用户同时在线聊天的系统。这个系统可以运行在Android、iOS以及PC等多个平台上,实现了真正的跨平台通信。 在实现这个...