12、android socket使用demo:网络聊天
2015-02-11 19:32
274 查看
目录:
一、效果图
二、原代码分享
三、代码分析
四、总结
[b]一、效果图如下[/b]:
客户端1: 客户端2:
View Code
[b]三、代码分析[/b]
流程分析:
1、服务端
程序开启的时候,执行serverStart()方法,将自身做为serverSocket,端口号为8888,做为socket的服务器跑起来;
在循环中,通过带有阻塞特性的accept函数等待连接,如果有连接,通过accept函数得到套接字s,然后通过s的getInputStream()方法得到输入流(也就是对方发送的内容),同事也从s的getInetAddress方法得到对方的ip地址;这样一来就读到了两个重要信息 ① ip地址 ②发送过来的内容
2、客户端
在通过设置edittext内容,配置得到对方的IP地址和端口号,如果选中"开启发送模式",然后创建套件字s,通过套接字的getOutputStream()方法得到可写流out;
“发送”按钮的回调函数是用来通过可写流-写入-套接字(写入内容为用户输入的文本)
这样一来,程序基本ok了,然后运行在两部手机上,即可实现基于socket的网络聊天。
[b]四、总结[/b]
参考连接:
1、 http://mobile.51cto.com/android-386691.htm
2、/article/1358117.html
3、/article/5719725.html
socket简单通信的几个关键点:
1、如果要实现接受消息功能,需要本身做为服务端跑起来,同时得到可读流。关键点:serverSocket、getIputStream
2、如果要实现消息发送功能,需要本身创建套接字,并得到可写流,同时设置要发送到的ip和端口号。关键点:socket、getOutputStream、对方IP、对方Port
That's All
没找到在随笔里如何添加附件,工程附件大家去网盘下载去吧。http://pan.baidu.com/s/1o6vA8sU
一、效果图
二、原代码分享
三、代码分析
四、总结
[b]一、效果图如下[/b]:
客户端1: 客户端2:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:id="@+id/editText_ip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/TextView_ip_tips" android:layout_marginRight="15dp" android:text="192.168.1.232" android:ems="10"/> <TextView android:id="@+id/TextView_ip_tips" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginTop="16dp" android:text="接受IP:" /> <EditText android:id="@+id/EditText_port" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/textView_port_tips" android:layout_below="@+id/editText_ip" android:layout_marginTop="16dp" android:ems="10" android:text="8888" android:inputType="number" > <requestFocus /> </EditText> <TextView android:id="@+id/textView_port_tips" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/EditText_port" android:layout_alignParentLeft="true" android:text="输入端口号:" /> <TextView android:id="@+id/textView_history_content" android:layout_width="match_parent" android:layout_height="350dp" android:layout_below="@+id/checkBox_server_start" /> <Button android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/EditText_content" android:layout_alignParentBottom="true" android:text="发送" /> <EditText android:id="@+id/EditText_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:ems="10" /> <CheckBox android:id="@+id/checkBox_server_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/EditText_port" android:layout_marginLeft="24dp" android:checked="false" android:text="开启发送模式" /> </RelativeLayout>
View Code
[b]三、代码分析[/b]
流程分析:
1、服务端
程序开启的时候,执行serverStart()方法,将自身做为serverSocket,端口号为8888,做为socket的服务器跑起来;
在循环中,通过带有阻塞特性的accept函数等待连接,如果有连接,通过accept函数得到套接字s,然后通过s的getInputStream()方法得到输入流(也就是对方发送的内容),同事也从s的getInetAddress方法得到对方的ip地址;这样一来就读到了两个重要信息 ① ip地址 ②发送过来的内容
2、客户端
在通过设置edittext内容,配置得到对方的IP地址和端口号,如果选中"开启发送模式",然后创建套件字s,通过套接字的getOutputStream()方法得到可写流out;
“发送”按钮的回调函数是用来通过可写流-写入-套接字(写入内容为用户输入的文本)
这样一来,程序基本ok了,然后运行在两部手机上,即可实现基于socket的网络聊天。
[b]四、总结[/b]
参考连接:
1、 http://mobile.51cto.com/android-386691.htm
2、/article/1358117.html
3、/article/5719725.html
socket简单通信的几个关键点:
1、如果要实现接受消息功能,需要本身做为服务端跑起来,同时得到可读流。关键点:serverSocket、getIputStream
2、如果要实现消息发送功能,需要本身创建套接字,并得到可写流,同时设置要发送到的ip和端口号。关键点:socket、getOutputStream、对方IP、对方Port
That's All
没找到在随笔里如何添加附件,工程附件大家去网盘下载去吧。http://pan.baidu.com/s/1o6vA8sU
相关文章推荐
- android开发(12) 使用无线网络和切换到GPRS连接
- 使用Vitamio打造自己的Android万能播放器(12)—— 播放网络视频缓冲处理
- android开发(12) 使用无线网络和切换到GPRS连接
- Android使用RxJava+Retrofit请求网络的小Demo
- Android 使用Socket实现服务器与手机客户端的长连接二:多Client对一Server聊天
- Android 网络编程: SOCKET的简单使用。
- 基于socket的客户端和服务端聊天简单使用 附Demo
- 使用Vitamio打造自己的Android万能播放器(12)—— 播放网络视频缓冲处理
- Android--使用socket通讯建立网络聊天室1
- 【java学习记录】12.用Socket网络访问方法,实现简单的网络聊天程序
- 初学Android,网络应用之使用多线程Socket(八十五)
- Java UDP使用Socket进行网络聊天(2)之群聊版
- 使用Vitamio打造自己的Android万能播放器(12)—— 播放网络视频缓冲处理
- 使用android进行Socket通信实现多人聊天应用
- 使用SuperSocket实现TLV自定义协议网络通信的Demo
- 使用Vitamio打造自己的Android万能播放器(12)—— 播放网络视频缓冲处理
- Android中基于TCP协议的网络通信之使用Socket进行通信
- Java UDP使用Socket进行网络聊天(1)
- android网络应用入门demo——Socket方式与获得服务器数据
- Android 使用Socket实现服务器与手机客户端的长连接一:一对一聊天