初玩Windows网络编程(1)

前不久在MSDN看了些关于WinSock的介绍,于是试着写了个小程序来运用下所学的东西。用的是面向连接的TCP协议,并且纯CUI界面。

Program


0x01: 菜单

一共有4个选项,分别是:

  1. 启动服务端
  2. 启动客户端
  3. 查看关于作者我的一些信息
  4. 退出

通过输入数字来进入相应的功能。


0x02: 服务端

Server

启动服务端后,用户需要指定某个TCP端口,图中使用的是12345,然后程序会开始在本机所有可用的IP上监听,同时防火墙也会提示。

Firewall

选择”Allow”,接下来它会默默的等待客户端的连接。


0x03: 客户端

Client

输入服务端的IP以及端口,连接成功后随即进入发送状态。同时服务端也会有相应提示。

Server2

服务端进入接收状态


0x04: 传输

Communication

在客户端输入文字,服务端会很快显示出来。

End

输入”###”来结束传输。


0x05: 部分源码分析

Tip: 完整源码下载在文章最后面

客户端代码:

Code1

  • Winsocket的初始化WSAStartup()已在主函数中完成
  • 新建一个用于连接的Socket TransferSocket
  • 填充SOCKADDR_IN结构的AddressInfo,分别是IPv4,地址,和端口
  • 调用connect连接至服务端
  • 循环,输入然后发送
  • 最后closesocket()

服务端代码:

Code2

  • 创建用于监听的Socket
  • 填充SOCKADDR_IN结构AddressInfo
  • 绑定socket
  • 监听
  • 接收客户端的连接
  • 循环,接受和显示消息
  • 最后closesocket

0x06: 关于

在主菜单敲入3回车可以查看。

About

显示了作者我的一些信息,以及程序的版本 v1.0。P.s: 目前这个程序还很小很小,等以后有时间的话可能我会进一步完善,用多线程,GUI,增加一些实用的功能如文件传输,等等。

源码已及编译好的文件都在这里,有兴趣的童鞋可以下载玩玩:

http://pan.baidu.com/s/1gd6Pkkj

雪峰
2015-09-11