想做一个聊天室,花费了将近一天的时间,各种错误.讲解知识点之前,絮叨几句:动手能力还是很重要的,有时看似简单的一个问题,当你真正着手去解决的时候就有可能会遇到各种各样的问题,原因之一就是因为你的知识储备出现了问题. 其实做软件开发做的多了,自己就应该将一些常用的功能封装成为一个工具类,例如网络检查.退出APP确认信息.开场动画.屏幕适配等. 另外,APP的Logo对于细心的开发者也很重要,最起码Logo应该是圆角的,这样就会让人看着很舒服,看看别人制作的Logo就会深有体会. java.net.…
读完本文你将了解: IBinder Binder Binder 通信机制 Binder 驱动 Service Manager Binder 机制跨进程通信流程 Binder 机制的优点 总结 Thanks 上篇文章 Android 进阶7:进程通信之 AIDL 中我们虽然跨进程通信成功,但是还是有很多疑问的,比如: AIDL 帮我们做了什么? 为什么要这么写? 什么是 Binder? 知其然还要知其所以然,一切都要从 Binder 讲起. IBinder Binder 继承自 IBinder,所…
小编心语:大家过完圣诞准备迎元旦吧~小编在这里预祝大家元旦快乐!!这一次要分享的东西小编也不是很懂啊,总之小编把它拿出来是觉地比较稀奇,而且程序也没有那么难,是一个比较简单的程序,大家可以多多试试~ Socket.IO聊天室 简介:Socket.IO实现了实时双向的基于事件的通讯机制.旨在让各种浏览器与移动设备上实现实时app功能,模糊化各种传输机制. 下面我们使用Node.js和Socket.IO来做一个简单的聊天室. 一.初始化项目 (这个是在实验楼网站的虚拟平台需要实现的~可自动略过这一环…
本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket(v=vs.110).aspx 我们使用DatagramSocket类完成UDP通信功能. 具体代码如下:(前台代码就不帖出来了,下面只给出后台代码和一些注释.完整源代码会在论坛发出来,地址在文章最后.) socket通信聊天w…
J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式   反向工程又称逆向工程.   开发项目涉及到的表太多,一个一个的写JAVA实体类很是费事.MyEclipse提供简便的方法:反向数据库.   步骤大致如下:   第一步:   window–>open Perspective–>MyEclipse Java Persistence   操作后会出现一个视图DB Brower:MyEclipse Derby   左边的属性按照自己使用的数据库填就行…
Java进阶(四十七)Socket通信   今天讲解一个 Hello Word 级别的 Java Socket 通信的例子.具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行Client端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接收消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求.客户端输入字符串后按回车键,向服务器发送数据.服务器读取数据后回复客户端数据.此次请求处理完毕后,启动的线程消亡.如果客户端接收到…
Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两种方法: http://www.blogjava.net/nokiaguy/archive/2009/03/19/260745.html 一般来说获取服务端数据流程是这样的: 1,跟服务端开发人员确定服务端接口使用的协议,是http请求还是webservice.根据协议不同你要在手机端使用不同的方式…
Android进阶(十八)AndroidAPP开发问题汇总(二) 端口被占用解决措施: Android使用SimpleAdapter更新ListView里面的Drawable元素: http://www.cnblogs.com/thu539/archive/2012/02/01/2334455.html Android中Bitmap,byte[],Drawable相互转化: http://www.cnblogs.com/fighter/archive/2012/02/20/android-bit…
读完本文你将了解: AIDL AIDL 生成文件分析 Stub Proxy AIDL 生成的内容小结 AIDL 的使用回顾 服务端 客户端 小结 手动写个 Binder 首先是定义跨进程接口实现 IInterface 然后在其中创建这个接口与对应 Binder 的转换类 Stub 最后创建代理接口在不同进程中客户端持有的是代理 Thanks 在 Android 进阶7:进程通信之 AIDL 的使用 中我们使用 AIDL 实现了跨进程的通信,但是不清楚 AIDL 帮我们做了什么. AIDL 的本质…
Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # b类或者b对象 能够使用 a类的所有属性和方法 # 为什么要有继承 由子类继承父类,从而完成了对子类功能的扩展 #第一: 子类对父类的继承是全部的公有和受保护的继承,这使得子类可能继承了对子类无用甚至有害的父类的方法.换句话说,子类只希望继承父类的一部分方法,怎么办? #第二: 实际的对象千变万化,…
Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路.一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信. Client A  发信息给 Client B ,  A的信息首先发送信息到服务器Server ,Server接受到信息后再把A的信息广播发送给所有的Clients 首先我们要在服务器建立一个ServerSocket ,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待…
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 图来自:http://www.ibm.com/developerworks/linux/tutorials/…
这是第一版,最简单的,仅仅实现了通信,你收我发,我收你发而已.下篇将介绍,基于异步多线程的聊天室: 客户端: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #-*-coding:utf-8-*- #聊天室,服务端代码   import socket soc_object=socket.socket(); address=('127.0.0.1',9999) soc_object.bind(address); soc_object…
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu…
项目:一个公共聊天室功能的实现,实现了登录聊天,保存聊天记录等功能. 一.实现代码 1.客户端 ChatClient.java import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import jav…
上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # -*- coding:utf-8 -*-   import SocketServer class  mysocketclass(SocketServer.BaseRequestHandler):     def handle(self):         client_info…
上一篇文章Android进阶:四.RxJava2 源码解析 1里我们讲到Rxjava2 从创建一个事件到事件被观察的过程原理,这篇文章我们讲Rxjava2中链式调用的原理.本文不讲用法,仍然需要读者熟悉Rxjava基本的用法. 一.Rxjava2 的基本用法 Rxjava是解决异步问题的,它的链式调用让代码看起来非常流畅优雅.现在我们带上线程切换以及链式调用来看看.下面代码是示例: Observable .create(new ObservableOnSubscribe<String>() {…
读完本文你将了解: AIDL 是什么 AIDL 支持的数据类型 AIDL 如何编写 AIDL 实例 创建 AIDL 编写服务端代码 编写客户端代码 运行结果 总结 代码地址 Thanks 记得 2015 年实习面试,笔试题里就有这道题:请介绍下 AIDL. 当时的我是懵逼的,只好老老实实空着.没想到后来面试时面试官大哥嘿嘿一笑说他也没用过这玩意,真是够实诚的. 笔试完查了这个知识点,似懂非懂也没深究.去年看<安卓开发艺术探索>时也学了这部分内容,但是可能当时水平不够,或者只是看起来努力,没有真…
1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>…
不要害怕困难,这是你进步的机会! 读完本文你将了解: OSI 七层网络模型 TCPIP 四层模型 TCP 协议 TCP 的三次握手 TCP 的四次挥手 UDP 协议 Socket 简介 Socket 的基本操作 使用 TCP 通信的 Socket 流程 使用 UDP 通信的 Socket 流程 使用 TCP 通信的 Socket 实现跨进程聊天 创建服务端 TCPServerService 在客户端中建立连接收发数据 运行结果 代码地址 Thanks 前面几篇文章我们介绍了 AIDL .Bind…
websocket的实现有很多种,像ws和socket.io,这里使用的是socket.io来实现多房间的效果. 这里的使用没有使用socket.io官方提供的namespace和room,而是完全通过一个namespace实现的.数据传输使用JSON格式,封装了消息规范 消息体规范 const actionType = { join:'JOIN',//加入 leave:'LEAVE',//离开 talk:'TALK',//消息 action:'ACTION',//用户操作 push:'PUSH…
d0304 更新功能实现 d0312 更新部分图片&UI设计部分 d0318 更新功能实现 d1222 实现添加好友功能.实现注册功能.修改大量BUG github:https://github.com/He11oLiu/ChatRoom.git ========================================================== 即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网路即时的传递文字讯息.档案.语音与视频交流…
1.介绍 2.使用方法 3.java后台代码 服务器server package com.lucky.servertest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import ja…
SOCKET TCP协议: 有请求 有响应 称之为 tcp协议 是面向连接的协议 就是在收发数据之前 必须先要建立一个可靠的链接 三次握手 如:网站 UDP协议: 是一个非链接的协议 传输之前不需要键连接 如:qq,飞秋 socket概念: Socket又称套接字 向网络发出请求 或者应答网络请求 可以实现在一台计算机上不同的进程进行通信 二.socket使用 import socket socket.socket(family,type) 参数: family: AF_UNIX或者是AF_IN…
我们为什么需要ZMQ 目前的应用程序很多都会包含跨网络的组件,无论是局域网还是因特网.这些程序的开发者都会用到某种消息通信机制.有些人会使用某种消息队列产品,而大多数人则会自己手工来做这些事,使用TCP或UDP协议.这些协议使用起来并不困难,但是,简单地将消息从A发给B,和在任何情况下都能进行可靠的消息传输,这两种情况显然是不同的. 让我们看看在使用纯TCP协议进行消息传输时会遇到的一些典型问题.任何可复用的消息传输层肯定或多或少地会要解决以下问题: 如何处理I/O?是让程序阻塞等待响应,还是在…
本来这次作业我是想搞个图形界面的,然而现实情况是我把题意理解错了,于是乎失去了最初的兴致,还是把程序变成了功能正确但是“UI”不友好的console了,但是不管怎么样,前期的图形界面的开发还是很有收获的,毕竟讲真,想要把Java搞得有形有色的也是很不容易的,借助可视化的插件windowsBuilder,这个过程还是既exciting 又tiring的. 好吧 ,然而图形界面已经成为了历史,现在来说说这个功能正确的console 吧 我也是刚知道的Eclipse里面是可以跑好多个程序的,只要你的一…
多线程开发和Socket技术 一.进程和线程 进程:每个应用程序对应一个进程: 线程:一个进程至少包含一个线程,线程要和CPU进行交互. 多线程并发(可以理解为):"同一时间"执行多件事情,如程序一边执行,一边计数(计时):如人一边吃饭,一边看电视. 多线程并发的本质,其实并不是CPU"同时"执行多件事情,而是在不停的切换,执行一段时间事件A,切换,执行一段时间事件B:再切换,再执行一段时间事件A,如此往复,因为CPU处理速度非常快,电脑的使用者感觉不到,所以看起来…
HTTP通信中Client发送的每次请求都需要Server回送响应,在请求结束后,Client会主动释放连接.从建立连接到隔壁连接的过程成为一次连接.要保持Client程序的在线状态,需要不断地向Server发送请求.通常的做法是,即使不需要获取任何数据,Client也保持每隔一段固定的时间向Server发送一次保持连接的请求,Server在收到该请求后对Client进行回复,表明知道Client在线.若Server长时间无法收到Client的请求,则认为Client下线,若Client长时间无…
学习启舰大神,每篇文章写一句励志的话,与大家共勉. When you are content to be simply yourself and don't compare or compete, everyone will respect you. 当你满足于做自己而不去比较或竞争时,每个人都会尊重你. 读完本文你将了解: ContentProvider 简介 ContentProvider 与 URI 权限 先定义权限 给 provider 中设置读权限 在应用中注册这个权限 支持的数据类型…
读完本文你将了解: Messenger 简介 Messenger 的使用 服务端 客户端 运行效果 使用小结 总结 代码地址 Thanks 前面我们介绍了 AIDL 的使用与原理,这篇文章来介绍下 Android 中另一种 IPC 方式:Messenger. Messenger 简介 Messenger "信使",顾名思义,它的作用就是传递信息. Messenger 有两个构造函数: 以 Handler 为参数 以 Binder 为参数 private final IMessenger…