Android开发:本机Tomcat搭建服务器,客户端socket网络连接不上问题以及D-LINK端口转发设置

我是用自己的电脑搭建服务器,首先问题是我们需要在路由器上端口映射,外网才能访问到自己的电脑,如何端口映射可以看看这篇文章:

http://blog.csdn.net/zhoubin1992/article/details/45917775

一、D-LINK端口转发设置

我的是D-link如图:

名称写你客户端的名称。

IP地址:路由器给本机分配的IP地址,一般以192.168开头。查询方法:cmd下ipconfig

填写私有端口就是路由器需要打开的端口,也可以设置一个区间

公共端口的就是外网要访问的端口。

通信量类型选任意就好了。

二、socket通信程序出错

执行到Socket socket=new Socket("xx.xx.xxx.xxx",8888);就抛异常。报timeout错误。

原因就是客户端连接不上socket。

解决方法:

1、首先确定另开一个线程完成网络连接。

				new Thread(){
					public void run(){
						try{//连接网络并打开流
					        s = new Socket("110.83.75.12", 8888);
					        dout = new DataOutputStream(s.getOutputStream());
					        din = new DataInputStream(s.getInputStream());
						}catch(Exception e){//捕获异常
							e.printStackTrace();//打印异常
						}

2、这样还是不行,最后在StackOverflow里找到了答案,还需要在OnCreate中开启StrictMode

	     StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
         .detectDiskReads()
         .detectDiskWrites()
         .detectNetwork()
         .penaltyLog()
         .build());
  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
         .detectLeakedSqlLiteObjects()
         .penaltyLog()
         .penaltyDeath()
         .build());
		}

我也不知道为什么要加严苛模式,有人知道的话留言告诉我吧。

这时可以通信了,但是当我用自己的3G流量访问时,又出现了问题。查阅后发现是socket本机IP的问题。

本机还有个外网IP,获得方法:在百度上填写本机IP,出现的就是本机的真实IP。

然后把Socket("xx.xx.xxx.xxx",8888);的IP替换就好了~

时间: 2024-10-31 18:12:48

Android开发:本机Tomcat搭建服务器,客户端socket网络连接不上问题以及D-LINK端口转发设置的相关文章

【转】Android开发学习总结(一)——搭建最新版本的Android开发环境

最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1,学习Android开发的第一步就是搭建Android的开发环境,博客园里面有不少人也写了关于如何搭建Android开发环境的文章,我也看了一下,但是感觉都比较旧了,对照着做不一定能够搭建成功,但是有些搭建步骤是还是可

Android开发学习总结(一)——搭建最新版本的Android开发环境【转】

最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1,学习Android开发的第一步就是搭建Android的开发环境,博客园里面有不少人也写了关于如何搭建Android开发环境的文章,我也看了一下,但是感觉都比较旧了,对照着做不一定能够搭建成功,但是有些搭建步骤是还是可

Android开发使用GET方式向服务器请求和发送数据

#1.首先先用新建个servlet处理登陆请求 代码如下.只实现了doGet方法 package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSe

Android开发使用POST方式向服务器请求和发送数据

前面说了GET方式.现在尝试一下POST #1.首先先用新建个servlet处理登陆请求 package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Ht

android 发送UDP广播,搜寻服务器建立socket链接

应用场景:客户端(手机,pc)需要搜寻所在局域网内的服务器并获得服务器地址. 方法简介:客户端发送UDP广播,服务收到广播后得到客户端ip地址,然后向客户端发送一次socket链接,客户端收到socket链接,获得服务器地址. 相关知识: UPD.TCP.TCP是面向链接的,可靠的通信方式.UDP是面向非链接的通讯方式.TCP的建立比较麻烦,要经过"三次握手".而UDP的建立比较简单,发送方只管把内容发送出去,不管接收方是否收到.UDP的传输分为:单播,多播,广播.其中,多播和广播是通

搭建一台VPN服务器实现外部网络连接内部网络

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 搭建一台VPN服务器实现外部网络连接内部网络. 环境 服务端:CentOS 6.2 32 客户端:Windows XP 服务端配置 # 关闭SELinux sed -i '/^SELINUX\b/s/=.*/=disabled/' /etc/selinux/config setenforce 0 # 安装EPEL源(默认yum源没有open

Android开发笔记(一百一十六)网络学习资源

知名网站 本系列的开发笔记,对Android开发来说只是沧海一瓢,还有更多的技术等待我们去汲取.下面列出几个常用的开发网站,供初学者上路: 首先当然是国内首屈一指的技术网站csdn啦,csdn提供了众多频道,包括博客.论坛.下载.问答等等,其中博客专栏提供了最新的技术文章,值得推荐.csdn博客专栏的地址是 http://blog.csdn.net/column.html 下面是csdn博客专栏的网页截图: 其次是国外有名的开源网站GitHub,这里有众多的开源项目源码,是开发者分享代码的乐园.

服务器中判断客户端socket断开连接的方法

1, 如果服务端的Socket比客户端的Socket先关闭,会导致客户端出现TIME_WAIT状态,占用系统资源. 所以,必须等客户端先关闭Socket后,服务器端再关闭Socket才能避免TIME_WAIT状态的出现. 2, 在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号. client端通过 pipe 发送信息到server端后,就关闭client端, 这时server端,返回信息给 client

Android开发--NDK之环境搭建

android 中为什么实用NDK,网上一搜一大堆,在这原因不在赘述. 在Android SDK首次发布时,Google就宣称其虚拟机Dalvik是支持JNI编程方式的:也就是第三方的应用是可以调用自己公司的或者是其他C.C++动态库. 搭建平台:1.我这用的是MacBook,系统是OS X 10.11.5: 2.Android Studio 2.1.2 3.JDK1.8.0_77 x86_64 首先搭建NDK开发环境.启动Android Studio,在Android studio中,属性->