- 浏览: 506447 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
1.服务器程序:
- package com;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- /**
- * com Server
- *
- * @author Aina.huang E-mail: 674023920@qq.com
- * @version 创建时间:2010 Jul 14, 2010 10:45:35 AM 类说明
- */
- public class Main {
- private static final int PORT = 9999 ; // 端口监听
- private List<Socket> mList = new ArrayList<Socket>(); // 存放客户端socket
- private ServerSocket server = null ;
- private ExecutorService mExecutorService = null ; // 线程池
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- new Main();
- }
- public Main() {
- try {
- server = new ServerSocket(PORT);
- mExecutorService = Executors.newCachedThreadPool();// 创建一个线程池
- System.out.println("Server Start..." );
- Socket client = null ;
- while ( true ) {
- client = server.accept();
- mList.add(client);
- mExecutorService.execute(new Service(client)); // 开启一个客户端线程.
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- public class Service implements Runnable {
- private Socket socket;
- private BufferedReader in = null ;
- private String msg = "" ;
- public Service(Socket socket) {
- this .socket = socket;
- try {
- in = new BufferedReader( new InputStreamReader(socket
- .getInputStream()));
- msg = "user:" + this .socket.getInetAddress() + " come total:"
- + mList.size();
- this .sendmsg();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public void run() {
- // TODO Auto-generated method stub
- try {
- while ( true ) {
- if ((msg = in.readLine()) != null ) {
- if (msg.equals( "exit" )) {
- System.out.println("sssssssssss" );
- mList.remove(socket);
- in.close();
- msg = "user:" + socket.getInetAddress()
- + " exit total:" + mList.size();
- socket.close();
- this .sendmsg();
- break ;
- } else {
- msg = socket.getInetAddress() + " : " + msg;
- this .sendmsg();
- }
- }
- }
- } catch (Exception ex) {
- System.out.println("server 读取数据异常" );
- ex.printStackTrace();
- }
- }
- /**
- * 发送消息给所有客户端
- */
- public void sendmsg() {
- System.out.println(msg);
- int num = mList.size();
- for ( int i = 0 ; i < num; i++) {
- Socket mSocket = mList.get(i);
- PrintWriter pout = null ;
- try {
- pout = new PrintWriter( new BufferedWriter(
- new OutputStreamWriter(mSocket.getOutputStream())),
- true );
- pout.println(msg);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
2.客户端程序:
- package com.Aina.Android;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.Socket;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- public class Test extends Activity implements Runnable {
- /** Called when the activity is first created. */
- private TextView tv_msg = null ;
- private EditText ed_msg = null ;
- private Button btn_send = null ;
- private Button btn_login = null ;
- private static final String HOST = "192.168.0.132" ;
- private static final int PORT = 9999 ;
- private Socket socket = null ;
- private BufferedReader in = null ;
- private PrintWriter out = null ;
- private String content = "" ;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tv_msg = (TextView) this .findViewById(R.id.TextView);
- ed_msg = (EditText) this .findViewById(R.id.EditText01);
- btn_login = (Button) this .findViewById(R.id.Button01);
- btn_send = (Button) this .findViewById(R.id.Button02);
- try {
- socket = new Socket(HOST, PORT);
- in = new BufferedReader( new InputStreamReader(socket
- .getInputStream()));
- out = new PrintWriter( new BufferedWriter(
- new OutputStreamWriter(socket.getOutputStream())),
- true );
- } catch (Exception ex) {
- ex.printStackTrace();
- ShowDialog("登陆异常:" + ex.getMessage());
- }
- btn_send.setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- // TODO Auto-generated method stub
- String msg = ed_msg.getText().toString();
- if (socket.isConnected()) {
- if (!socket.isOutputShutdown()) {
- out.println(msg);
- }
- }
- }
- });
- new Thread( this ).start();
- }
- public void ShowDialog(String msg) {
- new AlertDialog.Builder( this ).setTitle( "提示" ).setMessage(msg)
- .setPositiveButton("OK" , new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- }
- }).show();
- }
- public void run() {
- try {
- while ( true ) {
- if (socket.isConnected()){
- if (!socket.isInputShutdown()){
- if ((content = in.readLine()) != null ) {
- Log.i("TAG" , "++ " +content);
- content += "\n" ;
- mHandler.sendMessage(mHandler.obtainMessage());
- }else {
- }
- }
- }
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- public Handler mHandler = new Handler() {
- public void handleMessage(Message msg) {
- super .handleMessage(msg);
- Log.i("TAG" , "-- " +msg);
- tv_msg.setText(tv_msg.getText().toString() + content);
- }
- };
- }
- <?xml version= "1.0" encoding= "utf-8" ?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width= "fill_parent"
- android:layout_height="fill_parent" >
- <TextView android:id="@+id/TextView" android:singleLine= "false"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- <EditText android:hint="content" android:id= "@+id/EditText01"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- </EditText>
- <Button android:text="login" android:id= "@+id/Button01"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- </Button>
- <Button android:text="send" android:id= "@+id/Button02"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- </Button>
-
</LinearLayout>
发表评论
-
Android源码去除锁屏及应用程序开机自动运行不锁屏全屏显示
2012-12-01 04:11 2117针对RealV210提供的源码 android_gingerb ... -
三步搞定android应用图片缓存
2012-08-27 13:56 728目前很多商业应用都会涉及到从网络上读取图片数据的问题,为了节约 ... -
关于BitmapFactory.decodeStream(is)方法无法正常解码为Bitmap对象的解决方法
2012-08-27 01:22 0分类: Android开发技术 2011-08-08 19:0 ... -
Android 菜单(OptionMenu)大全 建立你自己的菜单
2012-08-20 00:13 864菜单是用户界面中最常见的元素之一,使用非常频繁,在Andro ... -
android 全屏问题
2012-08-08 13:40 789<supports-screens android:la ... -
android 开发中中,经常用到的代码(转载)
2012-08-08 13:32 1613android 开发中中,经常用到的代码(转载) 2012-0 ... -
控制Android系统 全屏并且 程序开机自动运行 并且实现程序运行中 开机不锁屏
2012-08-08 12:06 0首先实现程序开机自动运行 需要 捕获系统的广播android. ... -
玩转Android---UI篇---Toast(提示)
2011-11-18 02:56 923Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来 ... -
Android 开发环境搭建中--- “An SDK Target must be specified.” 问题解决
2010-08-31 02:22 1094问题描述: 按照网络上的文档,搭 ... -
Android学习笔记(6)——Android——LoginDemo
2010-08-31 00:55 1203在这个demo中,将涉及到Activity(活动)的交互— ... -
Android学习笔记(5)——Android——HelloWorldDemo
2010-08-31 00:54 1204工程目录结构: HelloWorldActi ... -
Android学习笔记(4)——Android Application是如何运行的
2010-08-31 00:53 2225任何Android应用程序都是由以下4个部分中的必要组合而 ... -
Android学习笔记(3)——Android Demo演示
2010-08-31 00:51 1085第一步,启动Eclipse,File->New-&g ... -
Android学习笔记(2)——搭建Android开发平台
2010-08-31 00:50 1456Eclipse+Android SDK 一、下载Ecl ... -
Android学习笔记(1)——什么是Android
2010-08-31 00:49 749Android 是Google开发的基于Linux平台的开源手 ...
相关推荐
android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信
android socket网络通信编程实例,TCP/IP Socket、ServerSocket的形式。在JAVA编程中, 包来开发socket程序,下面列出所有常用的类,并简单介绍。再此说明一下:Socket仅仅是对TCP、UDP网络接口的封装,不涉及上层...
Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...
android socket编程 实现手机客户端和pc机进行网络通信
Android中,直接采用Socket通信应该是我们遇到的最低级的网络运用。
Android 基于Socket 的IPC通信
采用Android SOCKET开发的网络摄像头程序,接收网络传输过来的字节图片信息然后采用sufaceView实时显示
An blocking socket client for Java application or Andorid. Open source licenses Basic Socket Library Socket Server Plugin Library OkSocket Introduce OkSocket is a Java library project ...
android socket应用源程序,是我学习socket应用时候编写的,在PC机上下载一个testsocket软件,对应好IP和端口,就可以实现手机与PC机进行数据传输。本程序我是通过笔记本和手机通过无线路由器WIFI上网的状态下测试的...
实现方法:android socket ① 服务程序运行在PC端 ② 客户端程序运行在android模拟器 实现形式:由android 模拟器向服务程序发出消息,然后服务程序会送消息至模拟器。 注意要点: 一、 服务程序在PC端,需要指定...
android2.3以后,socket的连接需要一个相应的类似网络线程的管理的方法
Android 3G网络下Socket通信。 博文地址:http://blog.csdn.net/henglei1/article/details/23278795
Android通过socket套接字实现网络连接,通过ip地址和ip端口实现访问服务器,从而实现客户端和服务器的连接,然后实现两者数据的互连
Android 使用netty实现Socket通信demo+Sokit工具
Android中基于Socket的网络通信 - 博客中:聊天服务器项目源码
android项目,很多都会用上的网络通信这一技术,常用的就是Socket网络通信。Socket通信,基于TCP/IP协议和其它的协议和Http协议之间的桥梁,本文档列举一个简单的android项目,介绍了下Socket在android系统中是怎样...
包含android网络通信的6种方式源码,有socket、http、web、servlet等多种途径实现实例,可以练习使用。
Socket通信是网络通信中最常用的技术之一,通过Socket建立的可靠连接,可以让多个终端与服务器保持通信,最典型的应用是建立一个多人聊天程序。
1、 了解Android网络通信技术 2、 掌握在程序中嵌入浏览器的方法 3、掌握HTTP通信 4、掌握Socket通信 实验内容:(其中,1必做,2和3选一个) 1、 开发一个简单的浏览器程序,实现网址输入、前进、后退、刷新网页等...
Android 演示Socket通信的例子 包括了服务器端、客户端代码,以及测试的主程序。在本实例中,演示了采用两种方法实现添加线程,演示了Socket通信的建立方法,在客户端中连接到本机的端口号是5500,测试将数据输入流...