电脑上搭建服务器android_搭建本地服务器,电脑和android应用都能访问 - CSDN
  • 主要内容:1、在java上搭建一个简单服务器接收数据2、在android上建立客户端传递数据最终接收到数据效果:本文已经说了是使用java在PC本地创建服务器,首先肯定是要获取本地的IP地址,百度上方法有很多,笔者使用的...

    笔者此文也不太详述socket的原理了,主要是给新手一个demo,能够更好地理解android上的socket。


    主要内容:

    1、在java上搭建一个简单服务器接收数据

    2、在android上建立客户端传递数据


    最终接收到数据效果:





    本文已经说了是使用java在PC本地创建服务器,首先肯定是要获取本地的IP地址,百度上方法有很多,笔者使用的是在cmd框中输入ipconfig | findstr IPv4或者ipconfig/all查看,具体效果如图(图上是笔者的IP):





    然后实现服务器端程序,笔者是在eclipse中创建一个项目,直接定义一个JAVA类,如下:


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    public class SimpleServer {
    	public static void main(String[] args)
    	throws IOException
    	{
    		System.out.println("start while22");
    		//创建一个ServerSocket,用于监听客户端Socket的连接请求
    		ServerSocket ss=new ServerSocket(30000);
    		while(true)
    		{
    			//每当接收到客户端Socket请求的时候,服务器端也对应产生一个Socket
    			//将Socket对应的输入流包装秤ButtferedReader
                //进行普通IO操作
    			//关闭流,关闭Socket
    			Socket socket=ss.accept();
    			
    			BufferedReader in = new BufferedReader(
    					new InputStreamReader(socket.getInputStream()));  
                String str = in.readLine();  
                System.out.println("来自客户端的数据为:" + str);   
                
                in.close();
                socket.close();
    		}
    	}
    }
    


    接着再实现客户端代码:

    此处一定要用虚拟机,一定要用虚拟机,一定要用虚拟机。如果用真机运行客户端是找不到你的本地服务器的,笔者在此点上折腾了好多时间,期间一直在怀疑是自己的代码写错了。。。。

    MainActivity:

    import android.app.Activity;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.os.Message;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.util.logging.Handler;
    import java.util.logging.LogRecord;
    
    public class MainActivity extends Activity implements View.OnClickListener {
    
        private Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            button=(Button)findViewById(R.id.button);
            button.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.button:
                    new Thread()
                    {
                        @Override
                        public void run() {
                            super.run();
                            try {
                                //创建Socket
                                Socket socket=new Socket("10.3.18.49",30000);
                                //向服务器发送消息
                                //建立输出流
                                OutputStream out=socket.getOutputStream();
                                out.write("1111111111".getBytes("utf-8"));
                                //关闭流
                                out.close();
                                //关闭Socket
                                socket.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();
                    break;
            }
        }
    
    }
    

    activity_main:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        >
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SocketTest" />
    </LinearLayout>

    最后不要忘记在AndroidManifest中添加访问网络的权限:

     <uses-permission android:name="android.permission.INTERNET"/>



    末尾是贴上笔者实现的时候的一些图,希望有助于读者理解:


    实现的时候打开了,android studio,虚拟机,以及eclipse。(笔者电脑一般,特别卡。。)



    由于是为了测试,所以activity布局比较简单,就只有一个button来发送数据。





    展开全文
  • 我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。...

    我们平常学习时经常会写一下javaweb程序,我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。上次写的一篇博客,PC服务端与Android客户端实现网络通信,就是利用这个原理。

    我们分为三步走来实现:(我这里用的示例javaweb程序是我自己简单写的一个小程序shop1)

    1

    我们用Tomcat服务器,如果我们的javaweb程序已经部署到了Tomcat服务器,一般我们在本地访问的地址为:localhost:8080/shop1localhost指本机,即127.0.0.18080端口号,shop1你部署的项目名称,但太过繁琐,我们只想通过IP地址来访问我们的项目,即127.0.0.1或者localhost,我们只需修改一下Tomcat的配置即可,打开Tomcat所在的目录,打开conf文件夹,打开server.xml文件,所要修改的部分如下:

     
    
    <Connector port="80" protocol="HTTP/1.1"
    
                   connectionTimeout="20000"
    
                   redirectPort="8443" />
    
     
    
    <Context path="" docBase="shop1" reloadable="true" />
    
    


     

    即将port从原先的8080修改成80,因为http协议的默认端口是80,这样你就可以不用再输端口号了,把docBase="shop1"的值修改成你所部属的项目的名称,默认指向你的项目,这样你就可以不输项目的名称了。

    还得注意一点Tomcat 7.0的版本的server.xml文件中居然没有

    <Context path="" docBase="shop1" reloadable="true" />


    这一条,又下载了一个5.0版本的居然有,如果你的没有,复制加进去就可以了。

    OK,这样的话,你在浏览器里输入localhost就可以访问你的项目了!

    PS:为了下来的工作中不出现什么问题,我并没有将8080端口改成80,据说80端口被电信封掉了,我让用电信上网的同学访问我的网站,果然不行,这里我们明白道理就可以了,只是学习测试之用,所以我们就用8080端口。

     

    2

    上一步我们只实现了自己访问,但如何让外网的同学访问,这里可能涉及了简单的网络知识,我网络学的也不是很好。就说的比较通俗一点。有两种情况(1)你上网没有用路由,运营商单独分给你一个IP地址,那你直接可以用你的IP让外网的同学来访问你的网站,我们这里用的是8080端口,所以形式为:XX.XX.XX.XX:8080。为了让多的同学了解,我在啰嗦一下,怎么知道自己的IP地址,你不必用在cmd命令行输入ipconfig这种略显专业的方法去获取,其实只要在百度搜索“IP查询”,第一个就是。

    2)用了路由器,一个路由器带了好几台电脑,比如说跟室友,这就需要你去路由管理页面去设置一下,端口映射,让别人访问你们的IP地址时,映射到你的电脑,在浏览器中输入192.168.1.1(以你的路由为准),进入路由管理页面,操作如下图:

    转发规则-----虚拟服务器-------添加新条目

    端口我们没改,所以填8080IP地址为你的电脑在局域网中的地址,怎么样知道自己的局域网中的地址,很简单自己百度一下,只要局域网里的电脑不是太多,一般为192.168.1.XXX,我这里为192.168.1.101,然后点击保存,OK,然后外网就可以用你们IP去访问你的网站了!

    我的效果图如下:

    这时可以把这个网址发给你的同学,试一下,他能不能访问你的网站,答案是肯定的!

     

    3,

    但是又有新问题了,你第二天打开路由,或者再次上网时,运营商会重新分配给你一个新的IP地址,难道你让你同学访问时,再次把这个IP地址发给他吗?显然这是不合理了。

    此时,我们就想有一个动态域名多好。这里给大家介绍一款软件“花生壳”,下载安装,然后注册后,你就会获得一个免费的二级域名,每次开机自启后,就会将花生壳服务端中的IP数据更新成你新的IP地址,然后你每次用你固定的域名来访问时,就会解析到你新的IP地址。

    如下图:

    双击你的域名,看有没有显示出“经检测,您的域名已激活并指向正确”!

     

    OK,到这里,没有路由的同学,就可以直接用你的域名访问了!

     

    有路由的同学,还得多操作一步:

    再次进入路由管理页面,操作如下图:

    点击“动态DNS,这时如果你的上述操作都没问题的话,服务提供者那一栏已经自动填充成花生壳的网址了,然后输入用户名,密码,点击登录,如果显示为“连接成功”,那点击“保存”。

    到这里,终于大功告成,看一下最终效果图:

    可以看到,我用我的域名成功的访问到了我的网站。

    PS:有时显示“验证成功”时也是个假象,一点击“保存”时,又显示为“验证失败”,再点击“登录”,多点击几次“保存”,直到它一直显示为“验证成功”即可,反正就是多试几次。

    祝君好运!

    展开全文
  • Android 开发者有时也可以通过开发javaweb项目写接口然后供APP 调用,这时候你就需要一个服务器去发布接口项目,那么Android 开发者如何搭建自己的服务器?首先你需要选择一个服务器提供商,现在市面有很多云端...

    为什么搭建服务器

    Android 开发者有时也可以通过开发javaweb项目写接口然后供APP 调用,这时候你就需要一个服务器去发布接口项目,那么Android 开发者如何搭建自己的服务器?

    搭建服务器前推荐

    服务器推荐

    首先你需要选择一个服务器提供商,现在市面上有很多云端服务器,例如阿里云,京东云,新浪云……各有优缺点,选完厂家之后选服务器的系统,有 centos 和 ubantu,window 。centos 服务器用的还是偏多一点,window 就不建议了,毕竟安全系数还是低点。笔者选的是京东云的 centos 系统。

    工具推荐

    安装配置之前,推荐个工具。如果你是用 window 系统可以下载Xshell 和 Xftp,如果你是 mac 系统,你可以使用 termal(自带终端)和 FileZilla。Xshell 和 termal 可以帮助我们通过 ssh 方式连接我们远程服务器,进行操作,Xftp 和 FileZilla 通过 sftp 方式帮助我们用自己的电脑和服务器一对一的互相传输东西,比如你可以将下载好的安装包,直接传输到服务器上,也可以将服务器导出的数据库文件或者其他文件,直接download我们电脑桌面。

    Apache 和 Tomcat 都可以做为独立的 web 服务器来运行,但Apache 是普通服务器,本身只支持 html 即普通网页,像asp,php,cgi,jsp 等动态网页就需要 Tomcat 来处理。笔者是 Android 开发,所以就选择搭建java的服务器环境。分别需要安装 jdk,tomcat,mysql。

    安装之前你需要大致了解下centos各个文件夹的主要用途,可以参考这个网址(http://www.cnblogs.com/ellisonDon/archive/2012/10/03/2710730.html )安装文件不建议直接指令安装,因为配置环境我们还得需要找默认安装路径,而且也不方便我们去查找,建议将下载的安装文件都放到到usr/local目录下,然后解压安装。

    搭建步骤

    jdk的安装

      jdk的安装
      # cd /usr/local  
      # rpm -ivh jdk-7u79-linux-x64.rpm
    
      然后配置环境,修改系统环境变量文件
      # vim /etc/profile
      #添加以下文档   
    
      JAVA_HOME=/usr/java/jdk1.8.0_144
      JRE_HOME=/usr/java/jdk1.8.0_144/jre
      CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
      PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 
      export JAVA_HOME JRE_HOME CLASS_PATH PATH
    

    检查是否安装成功,如图所示:

    javac
    java -version
    

    jdk安装成功.png

    tomcat的安装

    # cd /usr/local   
    # tar -zxvf apache-tomcat-8.0.26.tar.gz // 解压压缩包   
    # rm -rf apache-tomcat-8.0.26.tar.gz.tar.gz // 删除压缩包    
    

    解压之后的tomcat.png

    查看是否安装成功

    # cd /tomcat7/bin
    # sh startup.sh // 开启tomcat
    

    image.png

    访问安装的tomcat

    i开启的tomcat.png

    有坑,可能对外访问不到,然后需要关闭防火墙,开放除22外的8080端口,然后杀掉tomcat进程,在重启tomcat

    查看防火墙状态: service iptables status  
    关闭防火墙 
    1) 永久性生效,重启后不会复原
    开启: chkconfig iptables on
    关闭: chkconfig iptables off
    2) 即时生效,重启后复原
    开启: service iptables start
    关闭: service iptables stop
    
    1. 查看进程
    ps aux |grep tomcat
    2. kill结束进程
    kill **  **指查看到的进程
    3. 重启tomcat
    /usr/local/tomcat7/bin/sh startup.sh
    

    mysql的安装

     # rpm -ivh mysql-community-release-el7-5.noarch.rpm
     # yum install mysql-server
     # service mysqld restart
     # mysql -u root //centos不像ubantu安装过程中让你输入密码,它默认没有,然后登陆修改即可
    

    mysql安装成功.png

    发布接口项目

    最后将自己的web项目写好的接口项目,通过开发工具打出war包发布到服务器tomcat的webapp下面即可,下面是我发布的测试地址:http://116.196.92.39:8080/test/index.jsp

    项目发布效果.png

    展开全文
  • Motivation 我写这套帖子的目的,是在自己学会、实现...我在学习编写自己的Android应用程序服务器的时候遇到过以下的问题: 1.我需要准备什么? 2.我该选择哪一套实现方案? …… 这些问题的搜索和查证都...


    Motivation

    我写这套博文的目的,是在自己学会、实现并熟练掌握之后,想帮助下面将会提到的这样一群正在学习Android的初学者,通过将自己的经验传递出去,让他们少走一点弯路,节省大量用在查询和翻阅资料上的时间。

    我在学习编写自己的Android应用程序服务器的时候遇到过以下的问题:
    1.我需要准备什么?
    2.我该选择哪一套实现方案?

    这些问题的搜索和查证都需要占用大量的时间,以至于初学者们手头的项目可能长达几个月没有进展,而我会一一为大家解决这些问题,你只需要花费看这一篇博文的时间。


    好了,言归正传:

    一、针对网站和APP的服务端程序的区别

    大部分的程序逻辑和代码结构都是一样的,仅仅在响应客户端请求时,针对浏览器返回的是用户需要看到的新的页面,而针对APP返回的是一段数据(如是否登录成功等),APP客户端根据这些数据再来跳转页面。


    二、我需要准备什么?

    硬件要求:

    一台用作服务器的联网电脑(可以购买云服务器或者用自己的PC)

    软件要求:

    安装JDK并配置完环境变量 (本套博文统一采用JDK 1.8)
    还有一些软件是需要用到的,到了具体的章节我们再引入。

    知识储备要求:

    1.基础Java知识和基础Java编程能力:

    也不需要对Java有多么深的理解,但是Java面向对象的三大要素——封装、继承、多态——至少要理解得清清楚楚!如果连静态方法和非静态方法都搞不清楚,那还怎么写程序?!

    2.计算机网络基础知识:

    对以下概念有较清晰的认识即可(不清楚的借一本计算机网络或者分条去查都可以快速搞明白):
    ①内网与外网;②局域网;③IP地址;④端口号;⑤Http请求;

    3.数据库相关知识:

    不会的必须找本书仔细学习一下。这个就不是随便查查就能懂的了。且有的知识(如范式)逻辑性较强,需要花时间认真学习。


    三、我该选择哪一套方案?

    在具有了一台联网电脑这一硬件条件后,我们的服务器仅仅有了一个容器,真正能让它工作起来的是一套软件相关的东西,那么我们就会去查,但是很遗憾,我们查到的99%的结果是网站服务器搭建,且博文1说A+B+C可以实现服务器,博文2又说A+D+E可以实现服务器…各种博文又抛出了一堆的框架。对于初学者来说,我就是交个毕设,或者仅仅需要支持一两个用户(自己和团队成员)的测试服务器,需要这么多概念吗?作为初学者到底应该学什么?

    以上的问题并非捏造,确实是博主之前面临到的问题,现在给大家一个“标答”:

    我们用:MySQL + Java Web + Tomcat + Volley 来实现我们的服务器。

    其中:
    ①MySQL是开源的数据库软件;
    ②Java Web是遵循Java语言风格的服务器应用程序组件(即客户端发来的请求的应答者);
    ③Tomcat是开源的服务器软件(作为Java Web应用程序的容器);
    ④Volley是谷歌官方为Android提供的Http请求库(写在Android客户端,用于向服务器端发送请求)。


    四、Android客户端发送Http请求和接收到应答的流程

    我来描述一下从Android客户端发出一趟请求到收到应答的过程(没图,但是我会说到各种图往往笼统和忽略的部分):

    1.客户端调用Volley请求函数向指定IP地址(或域名)的服务器发出一条Http请求(例如包含账号和密码的登录请求);

    2.服务器容器Tomcat收到Http请求,寻找相应Java Web编写的服务器应用程序,把请求分派给它来处理;

    3.Java Web编写的服务器应用程序找到处理请求相应的Servlet(Java Web项目的一部分,后面会讲)实例,把请求分配给它处理;

    4.Servlet根据请求来执行相应的操作(如调用数据库然后验证登录是否成功),将结果添加到应答中,发回客户端;

    5.客户端接收到应答,从应答中解析出结果(如登录是否成功),然后根据结果执行相应的逻辑(如跳转页面或提示账号密码不正确等)。


    五、基础实现

    实现的部分,我想分到多篇博文去讲各个部分的实现及其衔接。因此,下面用我每次测试自己APP时的流程来做个索引:

    1.启动内网穿透软件——内网穿透(2017.05.12)

    2.启动服务器软件和数据库软件

    ①服务器、数据库集成开发工具包(2017.05.13)

    ②MySQL数据库的建立(2017.5.18)

    ③Java Web的编写(2017.05.15)

    ④服务器端的一些测试方法(2017.05.19)

    3.启动APP,开始运行——Volley请求的编写(2017.07.01)


    六、进阶知识

    1.JSONObject与JSONArray(2018.04.12)

    2.Servlet请求调度器——DispatcherServlet(2018.04.14)

    3.Q&A


    更新日志

    这篇综述和索引的博文我就写到这了,去写几个分帖了,写出来之后我会第一时间在这里挂上链接,敬请期待。
    我的这套博文应该会在两周左右全部写完,如果是有紧急的问题需要帮助的朋友,直接回帖或者给我发邮件,在时间充足和我会的情况下帮你解决。
    ——2017.05.08

    实在是有些忙,今天忙里偷闲一天,写完了内网穿透的博文,已经在上面挂上了链接。我仔细想了一下,上面第二步可能需要三篇博文分别来讲服务器、数据库集成开发工具包的介绍,Java Web的编写和Tomcat的使用,之前吹牛说两周写完可能做不到了
    ——2017.05.12

    今早写了服务器、数据库集成开发工具包这篇文章,已经在上面挂上了链接。
    ——2017.05.13

    今天开始写Java Web的编写,写了之后才发现,这个确实挺麻烦的,各种细节需要各种截图,已经在上面挂上了链接,没写完,可以先看看前面的准备部分。
    ——2017.05.15

    今晚终于抽空写完了Java Web的编写, 诸君可以照葫芦画瓢,写自己的服务器程序了,博文有点长,进下心来慢慢看吧,绝对有收获!今天写着写着,又想到我好像没有规划MySQL建数据库的部分,就在索引中添上了。
    ——2017.05.17

    今天写完了MySQL数据库的建立,已经在上面挂上了链接。
    ——2017.05.18

    今天把Tomcat的一些使用方法写完了,写着写着突然忘了本来准备的内容了,略尴尬。
    ——2017.05.19

    今天终于把原计划的这最后一篇文章写完了,已经在上面挂上了链接。 原本计划两周写完的,这都拖了将近一个多月了。但是最近真的很忙,没办法。

    近期如果有空,我会写一篇番外文章,讲一点关于JSONObject和JSONArray的东西,应该会比较短,但是会很有用,尽请期待吧!
    ——2017.07.01

    根据各位开发者看完这套博文之后在开发过程中的反馈,今天对《内网穿透》、《Tomcat》和《Java Web》等三帖做了一些更新。
    ——2018.03.11

    时隔将近一年,我终于把承诺的JSONObject和JSONArray的部分写出来了,作为进阶使用的番外部分,已在上面挂上了链接。

    另外,今天写的尽兴的时候,想起了Servlet分配器这个东西,作为进阶内容的话还是很有意义与价值的。这次不会再跳票那么长时间了,一两天内完成,尽情期待!
    ——2018.04.12

    Servlet请求分派器的博文已经写完了,在上面挂上了链接。
    ——2018.04.14

    鉴于做整体的系统测试的时候,很难定位Bug出在了客户端还是服务端,我将《Tomcat的一些使用方法》这篇博文改名为《服务器端的一些测试方法》,并在里面添加了分享3。根据分享3,大家可以先写服务端,不写客户端,服务端测试正确了再开始写客户端,这样做的好处就是,我们可以更加精准的做到Bug定位了。
    ——2018.05.05

    今天做了一个重要的调整,即《MySQL》和《JavaWeb》两篇博文的次序,如果还是按我写它们时的顺序放在索引里,会造成你们逻辑的颠倒,因此,调了过来。
    ——2018.05.11

    根据近期自己在开发中的亲身经历和大家的反馈,写了一篇收集由PC和真实服务器环境的差异造成的Bug的博文,不光收集问题,也写了这些问题的解决方法。 大家在服务端出现Bug的时候可以点进去看看,有可能就对号入座,解决问题了,同时也鼓励各位开发者同仁,贡献出你们在开发过程中遇到的,各种各样的问题及其解决方案。
    ——2018.05.14

    为了便于索引和阅读,准备在所有的博文上加上目录,尤其是篇幅比较长的博文。
    ——2018.12.27

    近期发现有不止一个人问,non-static method 'XXX' can not be referenced from a static context这个异常怎么解决,怎样把XXX函数改成静态的?这就相当过分了。我也反省了一下是不是我这个教程写得太傻瓜式操作了。最后还是觉得,好东西也要看谁拿着。我再清清楚楚地声明一下:我这篇博文不是针对一点基础知识都没有的小白的,缺什么基础知识就去学完再来搞实践!!!
    ——2019.04.16

    今天对博文的内容和格式做了部分修改,同时根据近期开发和部署上遇到的一些问题,写了一篇新的博文用于记录软件版本差异造成的异常及其解决方案。
    ——2019.05.08


    后记

    目前,我们的网络知识体系对Android初学者实在是不太友好,首当其冲的问题就是不好查,作为初学者很难弄清针对APP的服务端和网站的服务端有多大的区别。 查到自己想要的知识相当不容易,各位大神写的也很零散。你写这一部分,他写那一部分,有的时候根本拼凑不到一起。因此,我在自己辛苦求索,花了近半个月把这一套东西弄通之后,写下了这一套博文。目的在于给和我处境类似的初学者们一些指引,让大家少走一些弯路。

    如果发现了代码或者理论方面的错误,请直接回复,我会尽快修改博文,避免误导了大家。

    如果在实现中出现了自己难以解决的问题,我的邮箱是implementist@outlook.com

    展开全文
  • 我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。...

    我们平常学习时经常会写一下javaweb程序,我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。上次写的一篇博客,PC服务端与Android客户端实现网络通信,就是利用这个原理。

    我们分为三步走来实现:(我这里用的示例javaweb程序是我自己简单写的一个小程序shop1)

    1,

    我们用Tomcat服务器,如果我们的javaweb程序已经部署到了Tomcat服务器,一般我们在本地访问的地址为:localhost:8080/shop1,localhost指本机,即127.0.0.1,8080端口号,shop1你部署的项目名称,但太过繁琐,我们只想通过IP地址来访问我们的项目,即127.0.0.1或者localhost,我们只需修改一下Tomcat的配置即可,打开Tomcat所在的目录,打开conf文件夹,打开server.xml文件,所要修改的部分如下:

    1.    
    2.   
    3. <Connector port="80" protocol="HTTP/1.1"  
    4.   
    5.                connectionTimeout="20000"  
    6.   
    7.                redirectPort="8443" />  
    8.   
    9.    
    10.   
    11. <Context path="" docBase="shop1" reloadable="true" />  
     
    
    <Connector port="80" protocol="HTTP/1.1"
    
                   connectionTimeout="20000"
    
                   redirectPort="8443" />
    
     
    
    <Context path="" docBase="shop1" reloadable="true" />
    
    

     

    即将port从原先的8080修改成80,因为http协议的默认端口是80,这样你就可以不用再输端口号了,把docBase="shop1"的值修改成你所部属的项目的名称,默认指向你的项目,这样你就可以不输项目的名称了。

    还得注意一点Tomcat 7.0的版本的server.xml文件中居然没有

    1. <Context path="" docBase="shop1" reloadable="true" />  
    <Context path="" docBase="shop1" reloadable="true" />

    这一条,又下载了一个5.0版本的居然有,如果你的没有,复制加进去就可以了。

    OK,这样的话,你在浏览器里输入localhost就可以访问你的项目了!

    PS:为了下来的工作中不出现什么问题,我并没有将8080端口改成80,据说80端口被电信封掉了,我让用电信上网的同学访问我的网站,果然不行,这里我们明白道理就可以了,只是学习测试之用,所以我们就用8080端口。

     

    2,

    上一步我们只实现了自己访问,但如何让外网的同学访问,这里可能涉及了简单的网络知识,我网络学的也不是很好。就说的比较通俗一点。有两种情况(1)你上网没有用路由,运营商单独分给你一个IP地址,那你直接可以用你的IP让外网的同学来访问你的网站,我们这里用的是8080端口,所以形式为:XX.XX.XX.XX:8080。为了让多的同学了解,我在啰嗦一下,怎么知道自己的IP地址,你不必用在cmd命令行输入ipconfig这种略显专业的方法去获取,其实只要在百度搜索“IP查询”,第一个就是。

    2)用了路由器,一个路由器带了好几台电脑,比如说跟室友,这就需要你去路由管理页面去设置一下,端口映射,让别人访问你们的IP地址时,映射到你的电脑,在浏览器中输入192.168.1.1(以你的路由为准),进入路由管理页面,操作如下图:

    转发规则-----虚拟服务器-------添加新条目

    端口我们没改,所以填8080,IP地址为你的电脑在局域网中的地址,怎么样知道自己的局域网中的地址,很简单自己百度一下,只要局域网里的电脑不是太多,一般为192.168.1.XXX,我这里为192.168.1.101,然后点击保存,OK,然后外网就可以用你们IP去访问你的网站了!

    我的效果图如下:

    这时可以把这个网址发给你的同学,试一下,他能不能访问你的网站,答案是肯定的!

     

    3,

    但是又有新问题了,你第二天打开路由,或者再次上网时,运营商会重新分配给你一个新的IP地址,难道你让你同学访问时,再次把这个IP地址发给他吗?显然这是不合理了。

    此时,我们就想有一个动态域名多好。这里给大家介绍一款软件“花生壳”,下载安装,然后注册后,你就会获得一个免费的二级域名,每次开机自启后,就会将花生壳服务端中的IP数据更新成你新的IP地址,然后你每次用你固定的域名来访问时,就会解析到你新的IP地址。

    如下图:

    双击你的域名,看有没有显示出“经检测,您的域名已激活并指向正确”!

     

    OK,到这里,没有路由的同学,就可以直接用你的域名访问了!

     

    有路由的同学,还得多操作一步:

    再次进入路由管理页面,操作如下图:

    点击“动态DNS”,这时如果你的上述操作都没问题的话,服务提供者那一栏已经自动填充成花生壳的网址了,然后输入用户名,密码,点击登录,如果显示为“连接成功”,那点击“保存”。

    到这里,终于大功告成,看一下最终效果图:

    可以看到,我用我的域名成功的访问到了我的网站。

    PS:有时显示“验证成功”时也是个假象,一点击“保存”时,又显示为“验证失败”,再点击“登录”,多点击几次“保存”,直到它一直显示为“验证成功”即可,反正就是多试几次。

    zz:http://blog.csdn.net/pzhtpf/article/details/7704337

    展开全文
  • 一般而言,Android 应用在请求数据时都是以 Get 或 Post 等方式向远程服务器发起请求,那你有没有想过其实我们也可以在 Android 设备上搭建一个小型 Web 服务器,并且实现常规的下载图片、下载文件、提交表单等功能...
  • 我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。...
  • 搭建服务器需要些什么工作 本文所介绍的服务器都是入门级别的,适合移动端同学自己搭建玩玩,还没有达到商业开发水平,大牛请莫见怪。 我们搭建服务器主要有以下几个步骤: 1.搭建开发环境,IntelliJ + ...
  • 虽然网上也有挺多的教程,我可能就是自己mark一下,对你们有...若是在window登录搭建好的Android服务器,需要下载xshell 若是在另外一部手机登陆搭建好的Android服务器,需要下载安装JuiceSSH 豌豆荚上面下载 jUic...
  • 装了服务器端的软件的那台电脑被称为服务器。常见的服务器的软件有apache tomcat。 2.Tomcat 介绍 tomcat是一种轻量级的web容器服务器,使用tomcat可以实现将本地的项目进行发布,客户端可以通过浏览器进行直接...
  • 看到标题是不是有点懵,在Android手机上搭建一个http服务器??? 你TM在逗我 ...没错,我们就是要在Android手机上搭建一个http服务器。...Android上也能运行Apache,nginx了??? Android手机上当然不能运...
  • 在Mac电脑上搭建Android Eclipse开发环境在Mac电脑上搭建Android Eclipse开发环境有如下4步:1. 先安装JDK,注意不要安装最新的1.9,安装1.8就好2. 下载Eclipse3. 在Eclipse安装ADT 插件4. 通过 Android SDK ...
  • 当你想要模拟网络数据请求下载文件时,不管是图片、音频或者视频的下载或者上传,完全可以自己搭建一个服务器。 首先你要有一个局域网,wifi环境。 你的手机和你的笔记本电脑都接入这个wifi 如果你的是台式机的话...
  • 搭建Android上服务器

    2019-09-09 07:21:22
    如何通过浏览器输入一个地址播放手机的视频? 在手机端搭建了一个服务器。 手机端的Server利用的是该库: https://github.com/koush/AndroidAsync 先把服务器搭起来 依赖库 首先,依赖下我们搭建Server需要...
  • 搭建手机视频服务器,使用手机看自己的电脑上的视频,支持外网IP,可以建立账号,设置账号访问限制,目前仅支持Android和WP7平台,功能强大,流畅播放,支持拖动定位播放
  • 如何使用我们的手机搭建ftp服务,以实现局域网内共享手机文件呢?
1 2 3 4 5 ... 20
收藏数 7,949
精华内容 3,179
关键字:

电脑上搭建服务器android