获取百度主页和系统调用

获取百度主页

exec 8<> /dev/tcp/www.baidu.com/80

知识点:

  • linux系统中一切皆文件
  • 把这个8理解为Java中的引用对象
  • exec 文件重定向
  • 文件描述符
cd /proc/$$/fd

知识点:

  • /proc文件夹
  • $$当前进程ID
  • fd
ll

知识点:

  • 此时已与百度建立socket连接(TCP连接已经有了,三次握手)
  • 什么是三次握手四次分手
  • 怎么连接的?
  • 什么是socket ?socket 通信✨

下一步我要和百度说什么话,百度能给我主页,此时与HTTP有关

发这样的话:

GET / HTTP/1.0\n

那怎样发过去呢?

echo -e 'GET / HTTP/1.0\n' 1>& 8

知识点:

  • -e
  • 标准输入标准输出
  • &

此时回车,咔,内容就发给百度了,那百度就得给我们返回内容,那么返回的东西怎么看呢?

这样看

cat 0<& 8

知识点:

  • cat
  • 标准输入标准输出

Java Socket编程

/**
 * @author tengwz
 */
public class TestClient  {
    public static void main(String[] args) throws Exception {


        Socket socket = null;
        InputStream is = null;
        OutputStream ops = null;

        
            try {
                socket = new Socket("www.baidu.com", 80);

                is = socket.getInputStream();
                ops = socket.getOutputStream();

                ops.write("GET / HTTP/1.1\n".getBytes());
                ops.write("HOST:www.baidu.com\n".getBytes());
                ops.write("\n".getBytes());

                int i = is.read();
                while (i != -1) {
                    System.out.print((char) i);
                    i = is.read();
                }

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (null != is) {
                    is.close();
                    is = null;
                }
                if (null != ops) {
                    ops.close();
                    ops = null;
                }
                if (null != socket) {
                    socket.close();
                    socket = null;
                }

            }
        
    }

}

/**
 * @author tengwz
 */
public class TestServer {
    public static void main(String[] args) throws IOException  {
        ServerSocket serverSocket=null;
        Socket socket = null;
        OutputStream outputStream = null;
        try {
            serverSocket = new ServerSocket(8080);
            while (true) {
                socket = serverSocket.accept();
                outputStream = socket.getOutputStream();
                outputStream.write("HTTP/1.1 200 OK\n".getBytes());
                outputStream.write("Content-Type:text/html".getBytes());
                outputStream.write("Server:Apache-Coyote/1.1\n".getBytes());
                outputStream.write("\n\n".getBytes());
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("");
                stringBuffer.append("title");
                stringBuffer.append("");
                stringBuffer.append("

header

"
); stringBuffer.append("
  • jbox使用说明 dcj3sjt126com Web
    参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [ 点击下载]  技术交流QQGroup:172543951 100521167 [2011-11-11] jBox v2.3 正式版 - [调整&修复] IE6下有iframe或页面有active、applet控件
  • UISegmentedControl 开发笔记 dcj3sjt126com
      //    typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {     //        UISegmentedControlStylePlain,     // large plain   &
  • Slick生成表映射文件 ekian scala
    Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包 "com.typesafe.slick" %% "slick-codegen" % slickVersion 因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包 "com.typesa
  • ES-TEST gengzg test
    package com.MarkNum; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation
  • 为何外键不再推荐使用 hugh.wang mysqlDB
    表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。 在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不
  • 领域驱动设计 julyflame VODAO设计模式DTOpo
    概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对
  • 单例设计模式 hm4123660 javaSingleton单例设计模式懒汉式饿汉式
           单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。      &nb
  • logback zhb8015 loglogback
    一、logback的介绍      Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class
  • 整合Kafka到Spark Streaming——代码示例和挑战 Stark_Summer sparkstormzookeeperPARALLELISMprocessing
    作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版
  • spring-master-slave-commondao 王新春 DAOspringdataSourceslavemaster
    互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。 为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数