- 浏览: 523448 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 2190针对RealV210提供的源码 android_gingerb ... -
三步搞定android应用图片缓存
2012-08-27 13:56 765目前很多商业应用都会涉及到从网络上读取图片数据的问题,为了节约 ... -
关于BitmapFactory.decodeStream(is)方法无法正常解码为Bitmap对象的解决方法
2012-08-27 01:22 0分类: Android开发技术 2011-08-08 19:0 ... -
Android 菜单(OptionMenu)大全 建立你自己的菜单
2012-08-20 00:13 910菜单是用户界面中最常见的元素之一,使用非常频繁,在Andro ... -
android 全屏问题
2012-08-08 13:40 830<supports-screens android:la ... -
android 开发中中,经常用到的代码(转载)
2012-08-08 13:32 1652android 开发中中,经常用到的代码(转载) 2012-0 ... -
控制Android系统 全屏并且 程序开机自动运行 并且实现程序运行中 开机不锁屏
2012-08-08 12:06 0首先实现程序开机自动运行 需要 捕获系统的广播android. ... -
玩转Android---UI篇---Toast(提示)
2011-11-18 02:56 957Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来 ... -
Android 开发环境搭建中--- “An SDK Target must be specified.” 问题解决
2010-08-31 02:22 1139问题描述: 按照网络上的文档,搭 ... -
Android学习笔记(6)——Android——LoginDemo
2010-08-31 00:55 1242在这个demo中,将涉及到Activity(活动)的交互— ... -
Android学习笔记(5)——Android——HelloWorldDemo
2010-08-31 00:54 1249工程目录结构: HelloWorldActi ... -
Android学习笔记(4)——Android Application是如何运行的
2010-08-31 00:53 2277任何Android应用程序都是由以下4个部分中的必要组合而 ... -
Android学习笔记(3)——Android Demo演示
2010-08-31 00:51 1116第一步,启动Eclipse,File->New-&g ... -
Android学习笔记(2)——搭建Android开发平台
2010-08-31 00:50 1491Eclipse+Android SDK 一、下载Ecl ... -
Android学习笔记(1)——什么是Android
2010-08-31 00:49 782Android 是Google开发的基于Linux平台的开源手 ...
相关推荐
android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信
Android Socket通信是Android应用开发中的一个重要部分,它允许应用程序通过网络与其他设备进行数据传输,实现客户端与服务器之间的实时通信。在这个场景中,"Android socket即时通信"涉及到在Android设备上创建...
在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,尤其在实现聊天应用时。本文将深入探讨如何在Android中实现基于Socket的客户端和服务端通信,以构建一个简单的聊天应用。 首先,让我们理解...
android socket网络通信编程实例,TCP/IP Socket、ServerSocket的形式。在JAVA编程中, 包来开发socket程序,下面列出所有常用的类,并简单介绍。再此说明一下:Socket仅仅是对TCP、UDP网络接口的封装,不涉及上层...
Socket是网络通信的一种接口,它提供了进程间通信(IPC)的能力,让两个设备能够通过Internet协议(IP)地址和端口号建立连接。在Android中,我们可以使用Java的内置Socket类来实现这一功能。 要构建一个Android...
在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,尤其在实现设备间的数据交换、服务器客户端交互等场景。本实例程序主要涉及到的是Android应用如何利用Socket进行TCP(Transmission Control ...
Socket通信是一种基于TCP/IP协议族的网络通信方式,它允许两个网络应用程序通过网络进行数据交换。在本场景中,我们关注的是C#作为服务器端,Android作为客户端的Socket通信实现。这种通信方式常用于移动应用与后台...
Socket是网络通信中的一个端点,它允许两个应用程序通过网络进行数据交换。在Android中,我们通常使用java.net.Socket和ServerSocket类来创建和管理Socket连接。ServerSocket用于监听客户端的连接请求,而Socket则...
在Android开发中,TCP Socket通信是移动应用与服务器进行数据交互的一种常见方式。TCP(Transmission Control Protocol)...在实际开发中,根据项目需求对这些基础组件进行扩展和定制,以满足各种复杂的网络通信场景。
Socket是网络通信中的一个抽象概念,它代表了两个应用程序之间的网络连接。在Android中,我们通常使用Java的`java.net.Socket`类来创建和管理Socket。 2. **服务器端(Server)** - **创建ServerSocket**: 服务器...
采用Android SOCKET开发的网络摄像头程序,接收网络传输过来的字节图片信息然后采用sufaceView实时显示
在Android开发中,Socket通信是实现设备间网络通信的重要手段,尤其在移动应用与服务器交互时,Socket扮演了关键角色。本实例将介绍如何在Android平台上进行简单的Socket通信,包括数据的发送和接收,以及如何解析...
在Android平台上进行网络通信时,Socket是不可或缺的一部分,特别是对于实时性要求较高的应用,UDP(User Datagram Protocol)常被选择,因为它提供了无连接的服务,数据传输速度快,开销小。本程序“android socket...
- **Socket接口**:Socket是Java提供的网络通信API,它为应用程序提供了一种在网络间发送和接收数据的方法。 - **TCP与UDP**:Socket分为两种类型,TCP(Transmission Control Protocol)和UDP(User Datagram ...
Android 使用netty实现Socket通信demo+Sokit工具
Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...
5. **异常处理**:由于网络通信存在不可预测性,因此在编写Socket通信代码时,需要充分考虑各种可能的异常,如IOException、SocketException等,并进行适当的错误处理。 接下来,我们探讨一下Android设备之间的...
在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,尤其在实现设备间的数据传输、服务器客户端交互等场景。本实例程序主要关注TCP Socket,它是一种面向连接、可靠的网络通信协议,确保数据的顺序...
10. **实战应用**:在提供的文件中,包括了各种示例代码和博客文章,如OiSoft在新浪博客上分享的Android Socket网络通信、Zhangshun在ChinaUnix博客上的Socket通讯讲解,以及tt_mc在博客园中关于Android与PC的Socket...
在Android平台上进行网络通信时,Socket是一个至关重要的组件。Socket提供了进程间通信(IPC)的能力,使得设备可以与其他网络上的设备或服务器交换数据。在这个"Android Socket 多用户通信"的示例中,我们主要关注...