开发者社区> 来学习啦> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux distributions DIP依赖倒置原则

简介:
+关注继续查看


既然要架设服务器,首先当然得要了解一下因特网。因为不管是哪种操作系统,若想要与因特网联机,这个网络基础就得了解。 举例来说,『网域』是经常会谈到的概念,当你发现一个设定为 192.168.1.0/255.255.255.0 时,晓得那是什么鬼东西吗? 如果不知道的话,呵呵!绝对无法设定好网站的啦!另外,为何你需要服务器?当然是想要达成某项网络服务。 举例来说,传输档案可以用 FTP,那 WWW 可以传递档案吗?网芳可以传递吗?各有何用处?哪个比较方便? 对于客户或老板来说,我们所设定的服务能否满足他们的需求等等,这都需要了解,否则你将一头雾水啊! 因此这部份你就得要了解:

基本的网络基础知识:包括以太网络硬件与协议、TCP/IP、网络联机所需参数等;
各网络服务所对应的通讯协议原理,以及各通讯协议所需对应的软件。

服务器本身:了解架网络服务器之目的以配合主机的安装规划

想要架设服务器吗?那...架什么服务器?这个服务器要不要对 Internet 开放?这个服务要不要针对客户提供相关账号? 要不要针对不同的客户账号进行例如磁盘容量、可活动空间与可用系统资源进行限制?如果要进行各项资源的限制, 那服务器操作系统应该要如何安装与设定?问题很多吧!所以,先了解你要的服务器服务目的之后,后续的规划才能陆续出炉。 不过,如果架站只是为了『练功』而已,呵呵!那就不需要考虑太多了~

服务器本身:了解操作系统的基本操作

网络服务软件是需要建置在操作系统上面的,所以基本的操作系统操作就得要了解才行啊!包括软件如何安装与移除? 如何让系统进行例行的工作管理?如何依据服务器服务之目的规划文件系统?如何让文件系统具有未来扩充性 (LVM 之类)? 系统如何管理各项服务之启动?系统的开机流程为何?系统出错时,该如何进行快速复原等等,这都需要了解的呢!

内部防火墙设定:管理系统的可分享资源

一部主机可以拥有多种服务器软件的运作,而很多 Linux distributions 出厂的默认值就已经开放很多服务给 Internet 使用了,不过这些服务可能并不是你想要开放的呢。我们在了解网络基础与所需服务的目的之后, 接下来就是透过防火墙来规范可以使用本服务器服务的用户,以让系统在使用上拥有较佳的控管情况。 此外,不管你的防火墙系统设定的再怎么严格,只要是你要开放的服务, 那防火墙对于该服务就没有保护的效果。因此,那个重要的在线更新软件机制就一定要定期进行!否则你的系统将会非常非常的不安全!

Android手机的应用,除了它的手机功能之外,另外一个吸引人的地方在于它的开放性,这一点iphone无法比拟,至少iphone太多商业化气息。android为我们开启另一扇交流之窗,而要实现交流,socket通信必不可少。

java在socket通信方面上已经有了很好的范例,我只是抛砖引玉,将其引入到android之中,疏漏之处在所难免,很多地方也值得深思与考量,高手不必拍砖,可跳过此文。下面,用敲门的方式演示Android如何实现套接字的通信。


服务器程序
服务器程序需要在PC上运行,该程序比较的简单,因此不需要建立Android项目,直接定义一个JAVA类,并且运行该类即可。它仅仅建立ServerSocket监听,并使用Socket获取输入输出流。

[java] view plain copy
import java.io.IOException;  
import java.io.OutputStream;  
import java.net.ServerSocket;  
import java.net.Socket;  
  
public class SimpleServer {  
  
    /** 
     * @param args 
     * @throws IOException  
     */  
    public static void main(String[] args) throws IOException {  
        // TODO Auto-generated method stub  
  
        //创建一个ServerSocket,用于监听客户端socket的连接请求  
        ServerSocket ss=new ServerSocket(30000);  
        //采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket  
        while(true){  
            Socket s=ss.accept();  
            OutputStream os=s.getOutputStream();  
            os.write("您好,您收到了服务器的新年祝福!n".getBytes("utf-8"));  
            os.close();  
            s.close();  
    }  
  
    }}  

客户端程序
[java] view plain copy
package my.learn.tcp;  
  
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.net.Socket;  
import java.net.UnknownHostException;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.util.Log;  
import android.widget.EditText;  
  
public class SimpleClient extends Activity {  
    private EditText show;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        show = (EditText) findViewById(R.id.show);  
  
        try {  
  
            Socket socket = new Socket("自己计算机的IP地址", 30000);  
            //设置10秒之后即认为是超时  
            socket.setSoTimeout(10000);  
            BufferedReader br = new BufferedReader(new InputStreamReader(  
                    socket.getInputStream()));  
            String line = br.readLine();  
  
            show.setText("来自服务器的数据:"+line);  
  
            br.close();  
            socket.close();  
  
        } catch (UnknownHostException e) {  
            // TODO Auto-generated catch block  
            Log.e("UnknownHost", "来自服务器的数据");  
            e.printStackTrace();  
        } catch (IOException e) {  
            Log.e("IOException", "来自服务器的数据");  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
}  

需要注意的是,在Manifest.xml文件当中,需要对互联网的访问进行授权。

[html] view plain copy
<uses-permission  android:name="android.permission.INTERNET"/>  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
linux 路由配置——route命令
使用下面的 route 命令可以查看 Linux 内核路由表。 # route Destination Gateway Genmask Flags Metric Ref Use Iface 192.
911 0
linux 性能监控命令5——w,who,whoami,whois
原文整理自网络: whois    功能说明:查找并显示用户信息。    语  法:whois [帐号名称]    补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别。
820 0
linux 性能监控命令6——mpstat,vmstat,iostat
1、mpstat mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。
924 0
linux 性能监控命令7——sar 命令
sar(System Activity Reporter系统活动情况报告)是目前Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
931 0
linux 进程监控命令3——uptime
linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。uptime命令过去只显示系统运行多久。现在,可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
923 0
linux 性能监控命令4——free
原文转自网络 在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在Linux系统如何查看内存使用情况呢?下面和大家分享在Linux系统下查看内存使用情况的free命令:[root@scs-2 tmp]# free      ...
748 0
+关注
3
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载