前不久在MSDN看了些关于WinSock的介绍,于是试着写了个小程序来运用下所学的东西。用的是面向连接的TCP协议,并且纯CUI界面。
0x01: 菜单
一共有4个选项,分别是:
- 启动服务端
- 启动客户端
- 查看关于作者我的一些信息
- 退出
通过输入数字来进入相应的功能。
0x02: 服务端
启动服务端后,用户需要指定某个TCP端口,图中使用的是12345,然后程序会开始在本机所有可用的IP上监听,同时防火墙也会提示。
选择”Allow”,接下来它会默默的等待客户端的连接。
0x03: 客户端
输入服务端的IP以及端口,连接成功后随即进入发送状态。同时服务端也会有相应提示。
服务端进入接收状态
0x04: 传输
在客户端输入文字,服务端会很快显示出来。
输入”###”来结束传输。
0x05: 部分源码分析
Tip: 完整源码下载在文章最后面
客户端代码:
- Winsocket的初始化WSAStartup()已在主函数中完成
- 新建一个用于连接的Socket TransferSocket
- 填充SOCKADDR_IN结构的AddressInfo,分别是IPv4,地址,和端口
- 调用connect连接至服务端
- 循环,输入然后发送
- 最后closesocket()
服务端代码:
- 创建用于监听的Socket
- 填充SOCKADDR_IN结构AddressInfo
- 绑定socket
- 监听
- 接收客户端的连接
- 循环,接受和显示消息
- 最后closesocket
0x06: 关于
在主菜单敲入3回车可以查看。
显示了作者我的一些信息,以及程序的版本 v1.0。P.s: 目前这个程序还很小很小,等以后有时间的话可能我会进一步完善,用多线程,GUI,增加一些实用的功能如文件传输,等等。
源码已及编译好的文件都在这里,有兴趣的童鞋可以下载玩玩:
http://pan.baidu.com/s/1gd6Pkkj
雪峰
2015-09-11