zoukankan      html  css  js  c++  java
  • 网络编程

    OSI参考模型有七层:

    开放系统互联参考模型-OSI(Open System Interconnection)

    OSI参考模型采用了分层的结构化技术,将功能逻辑上划分开来,以使整个结构具有较高的灵活性。OSI参考模型共七层。

    应用层(Application Layer)

    表示层(Presentation Layer)

    会话层(Session Layer)

    传输层(Transport Layer)

    网络层(Network Layer)

    数据链路层(Data Link Layer)

    物理层(Physical Layer)

    有一句英文可以巧妙记忆OSI七层参考模型:

    All people seem to need data process.

    (所有的人看起来都需要进行数据处理)

    从上到下,每个单词的最前一个字母与每一个层相对应。

    还有一句比较雷人的中文:

    阿婆死踢你的屁

    网络通信要素:IP地址、端口号、传输协议。

    在Java Api java.net包。

    对垃圾网址的屏蔽方法如下:::

    套接字Socket

    详见Java api中java.net包,DataGramSocket勇于接受和发送的套接字。

    DataGramPacket表示数据报包,用来实现无连接包投递服务,每条报文根据该包中包含的信息从一台机器路由到另一台机器,从一台机器发送到另一台的多个包可能选择不同 路由,也可能按不同的顺序到达,不对包投递做出保证。

    步骤:::

    Socket类实现客户端套接字,套接字是两台机器间通信的断点。套接字的实际工作由SocketImpl实例执行。。。见javaapi文档。。。。。。

    package edu.hnust.net;

    import java.net.InetAddress;

    import java.net.UnknownHostException;

    public class GetNetInfo {

          public static void main(String[] args) throws UnknownHostException {

               //获取ip地址

               String ip = InetAddress.getLocalHost().getHostAddress();

               String localname = InetAddress.getLocalHost().getHostName();

              

               String baiduip = InetAddress.getByName("www.baidu.com").getHostAddress();

               String baiduName = InetAddress.getByName("www.baidu.com").getHostName();

               System.out.println("本机ip地址:"+ip+"本机localname为:"+localname);

               System.out.println("baiduip地址:"+baiduip+"本机localname为:"+baiduName);

          }

    }

    package edu.hnust.tcp;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.net.Socket;

    import java.net.UnknownHostException;

    public class Client {

          /**

           * @param args

           * @throws IOException

           * @throws UnknownHostException

           */

          public static void main(String[] args) throws UnknownHostException, IOException {

               // TCP传输------客户端步骤:     

               //创建tcp客户端socket服务对象,使用的是Socket类

               Socket clientSct = new Socket("192.168.1.101", 10000);

              

               //获取socket输出流

               OutputStream out = clientSct.getOutputStream();

              

               //使用输出流,将数据写出

               out.write("在此写入你想输出的信息!!!服务端哥来了".getBytes());

              

               //使用输入流,将数据读入

               InputStream in = clientSct.getInputStream();

               byte[] buf = new byte[1024];

               int len = in.read(buf);

               String data = new String(buf,0,len);

               System.out.println(data);

              

               //关闭资源

               clientSct.close();//因为out是由Socket获取的,关闭Socket对象即可。

          }

    }

    package edu.hnust.tcp;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.net.ServerSocket;

    import java.net.Socket;

    public class Server {

          /**

           * @param args

           * @throws IOException

           */

          public static void main(String[] args) throws IOException {

               // TCP传输------服务端步骤:     

               /*

               1、创建tcp服务端socket服务对象,使用的是ServerSocket类。

               2、服务端必须为外部提供一个端口,否则客户端无法连接。

               3、获取链接过来的客户端对象。

                                (多个客户端同时连接服务端,客户端之间可以进行通讯,类似qq私聊)一个客户端可以通过

                                服务端获取另外一个客户端的socket对象,与之进行通讯。

               4、通过客户端对象获取socket流读取客户端发送过来的数据。

                                并且显示在该出现的地方,比如控制台,某个窗体。

               5、关闭资源。关客户端,关服务端。

                          (假如服务端设置了最大连接个数,客户端数目超过此数,

                          之后的就不可再连接,避免服务端资源浪费)服务端一般不会关闭。      

               */

               //创建tcp服务端socket服务对象,使用的是ServerSocket类

               ServerSocket serSocket = new ServerSocket(10000);

              

               //获取链接过来的客户端对象,使用方法accept()

               Socket clientSct = serSocket.accept();

               String ip = clientSct.getInetAddress().getHostAddress();

              

               //通过客户端对象获取socket输入流读,取客户端发送过来的数据

               InputStream in = clientSct.getInputStream();

               byte[] buf = new byte[1024];

               int len = in.read(buf);

               String data = new String(buf,0,len);

               System.out.println(ip+"说:"+data);

              

               //使用客户端socket获取输出流,将数据输出

               OutputStream out = clientSct.getOutputStream();

               out.write("在此输入信息!!!客户端哥收到".getBytes());

               //关闭资源,服务端一般不会关闭

               clientSct.close();

               serSocket.close();

          }

    }

  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/ydpvictor/p/3075757.html
Copyright © 2011-2022 走看看