zoukankan      html  css  js  c++  java
  • Java hello/hi的简单的网络聊天程序

    • 什么是Socket 
               在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。
        套接字在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的一个进程,“IP地址+TCP或UDP端口号”就为socket,即可以通过IP地址唯一的确定一台主机,再加上端口号既可以唯一的确定一个进程,这样就可以实现端到端的通信。
      在TCP协议中,建立连接的两个进程(客户端和服务器)各自有一个socket来标识,则这两个socket组成的socket pair就唯一标识一个连接。TCP是面向连接的可靠地服务,因此常用与文件传输系统,但TCP需要经历“三次握手”、“四次挥手”来保证连接的可靠性所以建立有建立连接时延。相比之下UDP服务为非面向连接的服务,常用与语音通话视频通话等,对延迟要求高的地方。

    三次握手 

    四次挥手

      socket本身就有“插座”的意思,因此用来形容网络连接的一对一关系,为TCP/IP协议设计的应用层编程接口称为socket API。
      我的理解就是Socket就是该模式的一个实现:即socket是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
      Socket()函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
    • Socket的应用

      

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

      那么Socket提供了那些函数呢?

        使用socket()函数创建套接字
        int socket(int af, int type, int protocol);
        服务器端要用 bind() 函数将套接字与特定的IP地址和端口绑定起来
        int bind(int sock, struct sockaddr *addr, socklen_t addrlen);  
        connect() 函数用来建立连接
        int connect(int sock, struct sockaddr *serv_addr, socklen_t addrlen); 
        通过** listen() 函数**可以让套接字进入被动监听状态
        int listen(int sock, int backlog); 
        通过 accept() 函数来接收客户端请求
        int accept(int sock, struct sockaddr *addr, socklen_t *addrlen); 
    • Java - Hello/Hi聊天程序 

       服务器端

       1.服务器端用ServerSocket类来创建socket对象。

       2.使用accept方法监听

       3.建立连接后使用输入输出流进行聊天

       4.释放资源

         客户端:

         1.使用Socket类创建爱你客户端的Socket对象

         2.通过IP地址和端口号建立连接

         3.通过输入输出流进行通信

         4.释放资源

  • 相关阅读:
    webpack进阶(二)
    webpack的loader和plugin的区别
    接口和面向接口编程
    设计原则与编程技巧汇总
    W3C的盒子模型和IE的盒子模型
    React的组件
    React的路由react-router
    三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法
    gulp 构建 demo
    antd 表单的两种校验方式
  • 原文地址:https://www.cnblogs.com/smjsoftware/p/12024456.html
Copyright © 2011-2022 走看看