GithubHelp home page GithubHelp logo

guohang537 / ipphone Goto Github PK

View Code? Open in Web Editor NEW

This project forked from veeupup/ipphone

0.0 0.0 0.0 24 KB

使用Socket编程,通过UDP传送音频流(实际为面向报文)的IP电话,使用TCP确认连接,然后使用UDP进行语音通信。

Java 100.00%

ipphone's Introduction

IP电话

暂时的思路:

使用P2P的架构,每个客户端进行两个进程,分别是

  • 作为服务端,
    • 在线,等待其他的用户拨号,并且可以选择是否接受电话
    • 当正在通话的时候,拒绝其他的连接
  • 作为客户端
    • 去连接其他的用户,如果返回的状态是接受,那么二者进入通话状态,这个时候开始传送语音

现在,对每个客户端每种状态的每个时刻进行状态的描述

每个电脑的其中一个客户端,分为几个状态,

这里以拨号方和接听方分别作描述

接听方

1.上线,等待连接

  • 这个时候,当一个用户开启客户端程序后,则进入状态1
    • 自动开启 9999 端口,等待TCP连接

2.收到其他TCP拨号请求

  • 当收到其他 IP 的TCP拨号请求,并且连接成功后,做以下动作
    • 开启 3000 端口,等待 UDP 报文的传输
    • 并且将收到的UDP报文转换为音频流,实时播放
    • 调用本地获取音频的输入,并将实时的音频流通过UDP发送回对应拨号端的 3000 端口

拨号方

1.上线,等待连接

  • 这个时候,当一个用户开启客户端程序后,则进入状态1
    • 自动开启 9999 端口,等待TCP连接

2.主动拨号 发起 TCP 连接

  • 输入IP地址,通过TCP连接,如果连接成功
    • 向对方的 3000 端口发送自己本地的音频流
    • 开启自己的 3000 端口,等待对方发送的数据
    • 将收到的 UDP 报文转换为实时的音频流输出播放
  • 如果失败,给出错误提示

ipphone's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.