在程序设计中涉及数据存储和数据交换的时候不管是B/S还是C/S模式 都有这样一个概念这要求一台性能和配置都比较好的主机作为服务器以满足数目众多的客户端进行频繁访问但是对于一些数据交换的要求不主同而且涉及到的通讯个体数目不多如果还采用一主机多客户机的模式便要求一台配置良好而且上安装了相关数据服务软件这样会造成硬件和软件上的很多不必要的成本这时Socket在点对点的平行对象之间的通讯的优势就就发挥出来了
其实对于Socket通讯来说服务器和客户端的界定不像数据库服务器与客户端那样明显甚至可以说Socket通讯里面的服务器和客户端只是相对的因为网络通讯的对象基本上是处于平等层面的只是为了方便对两台联网通讯的主机的描述才这样定义称谓的
由于在中Socket通讯的建立很容易所以本文主要介绍一个Socket的比较典型的应用的流程客户端向服务器发送图片请求图片服务器接收到请求并将服务器上的图片编码发送到客户端客户端得到图片数据后再将这些数据写成图片文件保存在客户端上
本文主要是对Socket的一个应用进行介绍所以至于其原理在此没有深究至于如何建立Socket还有如何实现网络的七层协议在此都没有进行相关研究和介绍本文主要介绍如何实现一个用户想要的功能即在两台主机之间进行通讯通过网络来收发用户想要收发的数据
一通讯流程图
[nextpage]
三测试socket的连接方法telnet远程登录
用户可以同时对客户端和端的Socket程序进行编写然后进行联调也可以一次只编写一个然后通过下面的方法来测试Socket连接
一般通过远程登录来测试连接是否成功比如测试本机的端口是否能连接成功
运行->cmd->telnet
在没有运行对本机的端口进行不断侦听的程序时会出现连接失败的提示
如果连接成功则会弹出另外一个窗口
如果在侦听线程里面设置断点通常连接成功后就会在
Socket sRecmdTemp = sRecvCmdAccept();
之后的语句上断点
附近演示程序的说明
使用VS创建
主要实现的功能是主机A向主机B发图片请求主机B将D盘image目录下的imagejpgimagejpg文件编码发送到主机B主机B再解码并写成图片文件到E盘的image目录下
为了方便调试演示程序将服务器和客户端同时放在本机上即localhost或者即本程序最终实现的效果就是将本机的D 盘image目录下的两个指定名称的图片传送到E盘image目录下所以在运行本程序前先在D:/image目录下放置两张命名为 imagejpgimagejpg的图片文件
先运行服务器程序再运行客户端程序