基于IPv6的语音聊天程序

         本文将简略描述我写的基于IPv6的语音通信程序。

一.背景

我们学校的校园网是按流量计费的,然而它只记IPv4流量,对于IPv6的流量是免费的,貌似国内高校教育网都是这样。于是我便萌生了将所有的耗费流量的网络操作都改写成IPv6的念头。第一个便是文件传输,做了三次改进,效果还是不理想,主要是我多线程方面的知识还比较欠缺,不过基本功能还是实现了的。留着将来有时间再改。第二个便是语音聊天。

二.程序界面

1.      服务器端


2.      客户端


三.准备知识

1.      Winsock、WSAAsyncSelect模型及IPv6有关函数

winsock是Windows网络通信API库,我们使用winsock函数进行通信。WSAAsyncSelect是异步(非阻塞)通信模式中的一种,也是最简单的一种。我用这个就够了。

MSDN中对此函数描述如下:

WSAAsyncSelect Function

The WSAAsyncSelect function requestsWindows message-based notification of network events for a socket.

 

int WSAAsyncSelect(

       __in          SOCKET s,

       __in          HWND hWnd,

       __in          unsigned intwMsg,

       __in          long lEvent

);

具体描述可参看MSDN,重点了解最后一个参数。当然你也可以谷歌,还可以百度。对于以上三者,我的建议程度有强到弱依次排列。

其它所涉及的网络操作函数有bind(用于绑定地址),listen(用于监听套接字),accept(用于接受套接字连接),recv(用于接收数据),send(用于发送数据),socket(用于创建套接字),closesocket(用于关闭套接字)。还有一个比较重要的函数——getaddrinfo,它的使用关系到我所编写的程序是否有存在的意义。

依然先上MSDN描述:

getaddrinfo Function

The getaddrinfo function providesprotocol-independent translation from an ANSI host name to an address.

 

int WSAAPI getaddrinfo(

        __in          const char* nodename,

        __in          const char* servname,

        __in          const struct addrinfo* hints,

       __out         structaddrinfo** res

);

 

Parameters

nodename

A pointer to a NULL-terminated ANSIstring that contains a host (node) name or a numeric host address string. Forthe Internet protocol, the numeric host address string is a dotted-decimal IPv4address or an IPv6 hex address.

 

servname

A pointer to a NULL-terminated ANSIstring that contains either a service name or port number represented as astring.

 

hints

A pointer to an addrinfo structure thatprovides hints about the type of socket the caller supports. See Remarks.

 

res

A pointer to a linked list of on

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园文件传输说明文档 版本1.0.20100905 使用方法: 首先接受方和发送方必须正常运行本程序,发送方在 接收方地址 栏 填入接收方的IP(也可以是IPv6)地址,打开要发送的文件,点击发送,等待对方回应即可 1.本软件同时支持IPv4和IPv6协议,只要双方主机有一种协议可接入网络即可 2.双击处于Running 状态的任务,可以停止任务,注意本软件暂不支持断点续传,停止后此次任务将失败 3.支持文件鼠标拖拽 4.暂不支持文件夹传送 常见问题(Q&A) 1.传输范围 理论上两台主机,只要发送方能ping通接收方,发送方就可以给接收方发送文件, 局域网内可以互传; 全校内可以互传; 不同学校可以互传; ADSL宽带用户可以传; 注意:如果双方在不同的内网下是无法传输的,记住只要发送方能ping通接收方,发送方就可以给接收方发送文件 2.和飞鸽的区别 飞鸽只是局域网传输,不同局域网是无法传输的,本软件无此限制;关于用户列表问题,只有局域网才可以获得用户列表,所以飞鸽有,本程序没有,因为超脱局域网是无法确定用户的 3.和QQ的区别 首先说明QQ的传输能力很强,本软件很多方面暂时还比不上,但某些方面还是比QQ有优势,如下 a.QQ需要你有账户,并且要登录成功,还只能好友间才能传输,本软件无此限制 b.QQ不支持IPv6协议,对于校园网络用户来说每个月的流量可是很宝贵的,而QQ会占用IPv4流量,致使根本不敢过多传输大文件,而一般高校是不限制IPv6流量的,而且IPv6速度也较快,又不限制流量,何乐而不为呢。事实上本软件的作者就是因为这个原因才开发此软件的。经历多年呕心沥血不吃不喝不眠不休,翻阅n多资料,敲烂n多键盘,终于大功告成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值