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();

          }

    }

  • 相关阅读:
    Android——DEBUG 堆栈
    mycat读写分离与主从切换
    【測试工具】一个将Unix时间转换为通用时间的工具
    jQuery:多个AJAX/JSON请求相应单个回调
    iOS开发中经常使用的Xcode插件
    JAVA学习第二十六课(多线程(五))- 多线程间的通信问题
    我的mac OSX bash_profile文件
    angular学习(二)—— Data Binding
    python 读取grib grib2
    linux获取内存、cpu、负载、网口流量、磁盘信息
  • 原文地址:https://www.cnblogs.com/ydpvictor/p/3075757.html
Copyright © 2011-2022 走看看