zoukankan      html  css  js  c++  java
  • Socket编程

    1、Socket在哪里?

    2、Socket是什么?

      Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    3、Socket之间的通信

    Send( ) 和 Receive( )详解

     核心类:

    Class ServerSocket:

    • 这个类实现了服务器套接字。 服务器套接字等待通过网络进入的请求。 它根据该请求执行一些操作,然后可能将结果返回给请求者。
    • 常用的构造方法ServerSocket(int port):创建绑定到指定端口的服务器套接字。 
    • 常用方法:accept():侦听要连接到此套接字并接受它。返回值Socket
    • bind(SocketAddress endpoint):ServerSocket绑定到特定地址(IP地址和端口号)。
    • close():关闭此套接字。

    Class Socket:

    • 该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。
    • 构造方法:Socket(InetAddress address, int port):创建流套接字并将其连接到指定IP地址的指定端口号。 
    • 常用方法:connect(SocketAddress endpoint) : 将此套接字连接到服务器
    • close():关闭此套接字。相当于客户端给服务器一个标识,告诉是消息发送完成。
    • 注意:socket.close() 将socket关闭连接,那边如果有服务端给客户端反馈信息,此时客户端是收不到的。
    • 可以先刷新缓冲流,在调用socket.shutdownOutput()是将输出流关闭,此时,如果服务端有信息返回,则客户端是可以正常接受的
    • socket.getOutputStream()  :客户端获得输出流
    • socket.getInputStream():服务器端获得输入流

    一般都会对流进行包装:

      * socket.getOutputStream()返回值是OutputStream
      * OutputStreamWriter是字符的桥梁流以字节流:OutputStream->Writer
      * 一般来说,Writer将其输出立即发送到底层字符或字节流。 除非需要提示输出, 否则建议将BufferedWriter包装在其write()操作可能很昂贵的Writer上,
      * BufferedWriter(Writer out)创建使用默认大小的输出缓冲区的缓冲字符输出流。

    BufferedWriter bufferedWriter =new BufferedWriter(
            new OutputStreamWriter(socket.getOutputStream()));    
    BufferedReader bufferedReader =new BufferedReader(
        new InputStreamReader(socket.getInputStream()));   

      

      

  • 相关阅读:
    IntelliJ IDEA + Maven + Tomcat 本地开发、部署、调试。
    IntelliJ IDEA 修改IDE字体、代码字体。
    IntelliJ IDEA 自动导入包的问题
    jersey中的 404 Not Found 错误。
    IntelliJ IDEA 创建maven项目一次后,然后删除,再次保存到此目录下,提供此目录已经被占用的问题。
    修饰符(字符篇)
    [讨论] 2015-8-13日 主题:关于指针和堆栈
    HDFS异构存储
    HDFS异构存储
    HDFS副本放置策略
  • 原文地址:https://www.cnblogs.com/dongtian-blogs/p/10733481.html
Copyright © 2011-2022 走看看