Skip to content

A ip phone, using tcp to connect and using udp to send messages

Notifications You must be signed in to change notification settings

Veeupup/IPphone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 报文转换为实时的音频流输出播放
  • 如果失败,给出错误提示

About

A ip phone, using tcp to connect and using udp to send messages

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages