这两天在编写 Socket客户端,服务器Demo时的总结:

1.客户端与服务器的形式:Android手机客户端,PC搭建Socket服务器,采用的是Apache-mina开源框架(异步连接框架).

2.网络连接方式:

2.1:怎么知道自己的电脑IP是内网还是外网:可以ping本机IP(cmd+ipconfig),如果IP是10.x.x.x;172.x.x.x;192.168.x.x。 基本判定为内网,其它形式一般为外网。

2.1*:如何访问内网的服务器:如果是通过路由上网,外部访问这个主机时,通过外网访问的只是路由的外网IP,路由器里面需要进行路由端口映射(将主机的IP和端口填入路由的端口映射表中),这个主机才能被访问到。校园网也类似,但是一般的用户是没有权限设置的。如果在校园网内网里面做服务器,希望被外网访问,需慎重。

2.1*:需要注意的是:比如我的本机IP是100.82.121.40,这是一个外网IP,但是实际上我是不能通过该IP地址访问服务器的,因为这是移动网的IP,而移动网是通过NAT(网络地址转换)形式的,所以在外网通过这个IP是不能本机的服务器的(可能需要类似于路由器的映射那样的转换才行,具体也不是太懂)。而与此同时,经过测试,联通和电信的网的IP是一个完整的外网IP(可以通过该IP地址访问服务器)---这是个人测试得到的一些结论,可能会有错误。

2.2:区域网内测试:手机和电脑在同一个区域网内(通过wifi连接),这时候客户端可以通过连接电脑的内网地址(区域网内的IP,一般是192.168.1.1类似的)连接PC服务器(端口任意),也可以通过直接连接电脑的外网地址(普通的IP4地址,注意不是内网的形式),其实本质只是通过内网连接(比如我外网是移动网,wifi模式下客户端可以通过外网IP连接诶服务器,但是断开Wifi,就会找不到服务器,所以这其实只是一种假象,就像本机客户端通过外网IP连接本机服务器一样)

2.3:外网测试:手机通过外网IP访问PC端的服务器,经测试,只能是联通网和电信网才行,移动网是NAT形式不能访问。

2.4:关于手机连上了wifi但是不能上网:与网上的很多教程里面的情况不一样,跟了N多教程都无用,我几经周折,最终才发现原来是杀软(bitDefend)里面没有开启internet连接功能(这样会放着外部的计算机蹭网),需要在防火墙的设定里面设置。

3.Demo展示:这次写的Demo是Apache-mina 的一个Socket客户端-服务器Demo,里面将收发消息和业务处理分开,留给具体的业务逻辑要我们自己去实现,而且还是异步非阻塞形式,所以效率比普通的Socket服务器高,关于它的用法网上一大堆教程。这里推荐这个(感谢这个作者):http://blog.csdn.net/xiaominghimi/article/details/7603084

3.1:最后贴出我的一个Demo(Android客户端和PC服务器(Java实现)):JAVA服务器选择端口打开,Android客户端输入服务器的外网IP和端口,连接。。。代码里有详细注解。

3.2需要注意的是:导入工程时,记得点击工程-buildpath-Configure buildPath,然后将我原来的JAR包移除,重新导入它们(因为每台机子上的路径都是不一样的),记得如果客户端的工程,Android Private Libraries里面没有这些JAR包,要在buildpath-Configure buildPath-Order and Export里面将它们勾上,这样Android才能将这些JAR包一起打包进入APK中。

总结:这两天一直被这种小问题所困扰(非常的耗费时间),当然,解决了它们后心情也大好。下一步就要开始写具体的服务器-客户端Demo了。

完整工程:http://download.csdn.net/detail/u010979495/8129539

Android客户端,PC服务器,Socket连接所遇到的问题相关推荐

  1. Android客户端与服务器用Socket进行通信

    Android客户端与服务器用Socket进行通信(简单,基础) #####哈哈哈,很久没有好好学习了,今天写一个关于通信的,我也是刚刚学到,代码还不完善,,,,有问题请大家指出 #Android客户 ...

  2. Android客户端与服务器连接

    一.实验名称 Android客户端与服务器连接. 二.实验背景 2.1需求分析 1.服务端使用JSON解析客户端的请求数据 2.客户端通过HttpClient对象访问服务器,向服务器发送http请求. ...

  3. Android客户端与服务器交互方式-小结

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要 ...

  4. Android 客户端与服务器交互方式

    突然想到一个问题就是Android客户端与服务器交互有几种方式,因为在脑袋里想当然的就是webservices和json.要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台.传 ...

  5. Android与PC通过USB连接通信(一)

    Android与PC通过USB连接通信(一) 原理 通过在Android设备与PC之间通过USB建立socket连接,以Android作为服务器,PC作为客户端,通过adb进行转发通信. 客户端代码及 ...

  6. MQTT客户端连接服务器协议,mqtt客户端和服务器长连接

    mqtt客户端和服务器长连接 内容精选 换一换 介绍设置客户端和服务器的安全认证方式的相关参数.参数说明:表明与服务器建立链接后,不进行任何操作的最长时间.参数类型:USERSET取值范围:整型,0- ...

  7. android 访问服务器josn文件,Android客户端对服务器回来的json文件进行解析

    Android客户端对服务器返回的json文件进行解析 和解析XML的方式大同小异,只有解析方式存在区别: /** * 解析服务器返回来的json数据 * @param content * @retu ...

  8. Android 架构之路 (1)-- Android 客户端与服务器的数据交互总结

    前言: 本文总结了 Android 客户端与服务器进行交互时,采用RESTful API +Json的交互方式,针对不同的数据形式以及不同的解析方法,如有不足之处,欢迎指正. 文章目录 1. Andr ...

  9. 游戏大厅 从基础开始(3)——最吸引眼球的部分 客户端与服务器的连接

    游戏大厅 从基础开始(3) --最吸引眼球的部分 客户端与服务器的连接 看了上篇随笔的回复 发现大家都很关心如何实现连接. 但是本节可能不会涉及到数据连接的具体实现. (补充: tcp实现封装已经完成 ...

最新文章

  1. 服务器拒绝连接(The remote system refused the connection.)
  2. druid 多数据源_Druid连接池的使用以及注意事项
  3. 单目视觉机器人的循迹_机器人视觉系统传感器的关键技术盘点
  4. python合并列表重新排序_python实现的合并两个排序的列表
  5. centos6安装mysql权限被拒绝_CentOS6.6安装mysql出现的问题
  6. JAVA进阶教学之(产生随机数)
  7. HTTP Response Splitting攻击探究 转
  8. react 将token充入_【React全家桶入门之十】登录与身份认证
  9. java ognl使用_java框架篇---struts之OGNL详解
  10. 使用C++编程语言保存数据库查询结果的方法
  11. java 时分秒 转换 秒_java实现时间格式转换(int整数类型的秒/毫秒---时分秒毫秒)...
  12. 联想服务器ts系列介绍,联想服务器ThinkServerTS230.ppt
  13. ubuntu18.04截图快捷键
  14. sci计算机论文发表论文格式,SCI论文发表的格式以及字体的要求是什么?
  15. Spring Boot(一)之入门篇
  16. 2014年优秀动画片推荐:马来西亚动画片《Ribbit》
  17. 说一下HashMap的实现原理?
  18. Unexpected token o in JSON at position 1报错
  19. linux 上端口占用的程序
  20. MatLab中多项式

热门文章

  1. 【社媒营销】Facebook速推帖子如何运作?值得吗?
  2. 以太坊--众筹ICO实现
  3. 服务器接收图片php代码,html上传图片数据到服务器,php接收保存图片
  4. 一起学Git:欲学Git请先忘记
  5. 2021只剩10%了,分享一个关于单片机自学的秘密
  6. 【SLAM】ORB_SLAM3 初步调试运行详细记录
  7. react native 红屏
  8. LearnOpenGL学习笔记——阴影
  9. 【数据恢复】感染.mallox勒索病毒的数据能否恢复?
  10. SOP-标准化操作步骤