询问socket/udp/http等等适用范围的区别 ( 积分: 50 )

  • 主题发起人 主题发起人 funxu
  • 开始时间 开始时间
F

funxu

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在学文件传输,但是socket/udp/http等等控件都能进行文件和对话传输,不知道在什么时候用什么控件比较好啊,能不能请哪位了解的大侠介绍一下几种常用的控件和协议的使用范围
 
最近在学文件传输,但是socket/udp/http等等控件都能进行文件和对话传输,不知道在什么时候用什么控件比较好啊,能不能请哪位了解的大侠介绍一下几种常用的控件和协议的使用范围
 
基于C/S结构的局域网通信软件
摘要 本文阐述了开发Windows Sockets通信程序的软,硬件环境,基本步骤和技术要点,并以在Windows 2000环境下,用Visual C++ 6.0编程为例 ,进一步阐述了开发Windows Sockets通信程序的经验与实践.
关键字 套接字 Windows Sockets 计算机网络 通信
第一章,引言
过去,计算机技术应用于日常办公,使人们可以进行文字处理,电子报表以及进行简单的人事管理,财务管理等,这仅仅提高了个人的工作效率.今天,计算机网络,通讯技术的日渐成熟,对办公自动化(OA)产生了深远的影响.办公自动化已经不再局限于某个部门或工作组,而是应用于大范围的组织.
本课题开发了一个基于局域网内部的消息通讯平台.在此平台上,可以实现内部用户之间的实时通讯,使用户之间能更及时,更方便,更安全有效的沟通信息.实现局域网内部电子化的信息交流,提高了工作效率.
近年来,随着计算机网络与Windows 2000的流行,许多用户所开发的应用程序需要实现网络间的数据通信,在此,本人根据在Windows2000环境下,利用Visual C++ 6.0进行Windows Sockets应用程序的开发经验,阐述一下有关网络间数据通信程序的开发内容.
第二章,系统需求分析
2.1系统目标
本系统通过使用VC++6.0开发出基于C/S结构的局域网通信软件,用于办公自动化,以期达到提高公司内部员工之间的信息交流效率.通过逐步完善软件功能,使之可以广泛应用于工厂,公司等办公自动化领域.
2.2功能需求
为了达到系统设计的目标以及实际应用的目的,本系统要求具有如下功能:
1),信息收发功能:包括文字信息以及图像信息等.
2),文件传送功能:实时传送各种类型办公文件.
3),抓取屏幕功能:通过此功能实时了解对方情况,以指导对方.
2.3硬件接口
网络适配器
2.4软件接口
本系统所用到的主要软件产品列出如下:
1),操作系统:Windows2000
2),VC++6.0:编写相关代码以及制作窗口
3),Rational Rose:进行需求分析和整体软件的设计
2.5系统性能要求
1)使用性:要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,以确保软件可使用性好.
2)可扩展性:要求系统扩展方便,升级容易.
3)可管理性:要求对系统进行管理简单,易用.
4)实时性:可实时传送信息
第三章,系统开发方案
3.1 Client/Server体系结构
Client/Server是一种目前发展已经非常成熟的计算机体系结构.在此之前,信息系统一般采用文件共享的方式,通过直接访问数据库来达到数据共享的目的.Client/Server体系结构严格地定义了客户端和服务器端对信息数据的处理范围.即客户端要访问服务器端的数据时,一定是以特定的描述语言,将请求信息首先传递给服务器端,由服务器端的相关模块判别并处理客户端的这个请求.请求处理完毕后,服务器端再将处理结果回传给客户端.这样才算一个访问过程的结束.Client/Server体系结构发展到今天已经非常成熟了,它可以把实现友好人机交互界面的任务交给客户端处理,而服务器端只需完成数据的存储和处理.这种体系结构的优点是:系统功能强大,交互能力强,系统运行效率高,并且开发工具和开发手段可选择性强.缺点是:所开发出来的系统相对比较封闭,主要适合于数据管理方式;系统结构复杂,开发周期长;安装和维护比较麻烦.
3.2 Browser/Web Server体系结构
为了克服Client/Server体系结构所存在的问题,最近几年来,随着Internet技术的飞速发展和日益成熟,特别是瘦客户机概念的提出和发展,提出了以Browser/Web Server体系结构为代表的多层Client/Server体系结构,作为对Client/Server体系结构的补充和发展.Browser/Web Server体系结构将Client/Server体系结构的两层结构发展到三层结构,一般可以认为是在原有的Client层和Server层之间加入了Application Server层(也称为中间件层).Application Server层承担了原来Client/Server体系结构中Client层和Server层的部分任务,这样使得Client层和Server层所承担的任务相对减轻.Client层变成比较统一的界面,Server层主要处理信息数据的存储和管理任务,Application Server层负责具体数据的处理任务,而且可以根据处理任务的变化而变化.Browser/Web Server体系结构的主要优点是对Client端设备的要求逐步降低,运行维护量下降;Application Server层的中间件软件日益丰富和模块化,降低了系统开发的工作量,缩短了开发周期.主要缺点是Application Server层的中间件软件目前还不够丰富和完善,而且对网络系统的运行环境要求较高.
3.3 P2P技术简介
P2P,英文Peer-to-Peer的缩写,中译为对等互联或点对点技术.P2P技术可以让用户可以直接连接到其他用户的计算机,进行文件共享与交换,同时P2P在深度搜索,分布计算,协同工作等方面也大有用途.
简单地说,P2P就是一种用于不同PC用户之间,不经过中继设备直接交换数据或服务的技术,它允许Internet用户直接使用对方的文件.每个人可以直接连接到其他用户的计算机,并进行文件的交换,而不需要连接到服务器上再进行浏览与下载.
目前Internet的存储模式是"内容位于中心",而P2P技术的运用将使Internet上的内容向边缘移动.这将带来以下改变:
首先,客户不再需要将文件上传到服务器,而只需要使用P2P与其他计算机进行共享; 其次,使用P2P技术的计算机不需要固定的IP地址和永久的Internet连接,这使得占有极大比例的拨号上网用户也可以享受P2P带来的变革.
P2P 应用的主体设计框图
MessageServer 类是这个 P2P 应用的核心.它能够与其他的对等网络获得联系,并将消息转发到合适的地方
3.4 分析结果
结合实际我们选择了Client/Server体系结构,作为此次开发的体系结构.采用此结构可以有效的解决办公自动化对软件的要求,以及管理上的方便.
3.4.1实现思想
在Internet上的通信程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程.因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序.
3.4.2服务器端工作流程
服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen().如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket.然后登录成功的客户就可以在服务器上聊天了.
3.4.3客户端工作流程
客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了.
第四章 系统设计
4.1系统设计流程
基于C/S结构的局域网通信软件采用自底向上的软件工程开发方法进行系统开发.系统的开发流程图如图4.1.1所示:



图4.1.1系统开发流程图
4.2系统模块
本系统以基于Client/Server体系结构为设计思想.由图4.2.1可以看到,系统分为三个模块:

图4.2.1 各模块图示
4.3系统初始化
4.3.1系统平台的搭建
1)网络中各节点上的计算机需安装网卡,并通过Windows 2000或其它途径安装上该网卡的驱动程序.在配置网络时,首先通过Windows 2000控制面板中的网络配置项及Windows 2000本地连接属性中文件共享性的设置,使各计算机节点能在"网上邻居"中找到自己和其它各计算机,并能实现文件资源相互共享.
2)要实现Windows Sockets应用程序在网上的数据通信,仅仅达到文件资源相互共享还不够,还必须在Windows 2000控制面板中的网络配置项添加上TCP / IP协议,同时给定相应的IP地址,这些IP地址在所建的局域网中,不能有重复.
4.4系统连接的建立
对于要求精确传输数据的Windows Sockets通信程序,一般采用流式套接字.流式套接字提供了一个面向连接的,可靠的,数据无错的,无重复发送的及按发送顺序接收数据的服务.其内设流量控制,避免数据流超限,同时,数据被看作是字节流,无长度限制.可通过图4-4-1表示其时序.
服务器方 客户机方
创建流式套接字
s1=socket(......)
将本地地址与s1相连
bind(s1, ..... )
监听来自客户方的连接
listen(s1, .....)
建立流式套接字
s=socket(........)
接收连接,并得到
新的套接字s2
s2=accept(s1, ....)
将套接字s与服务器
建立连接 方主机连接
connect(s, .......)
在套接字s2上,
读/ 写数据,直至 在套接字s上写/读数据,
数据交换完 直到数据交换完
recv(s2, .....) 数据传输 send(s, .....)
send(s2, .....) recv(s, .....)
关闭套接字s2 关闭套接字s
closesocket ( s2 ) closesocket( s )
关闭套接字s1
closesocket(s1)
4.5系统的实现
4.5.1建立应用程序框架
用VC ++的AppWizard建立了单文档类型的应用程序框架,项目名为Asock,它包括以下几个文件:
AsockApp.h AsockApp.cpp
MainFraim.h MainFraim.cpp
ChildView.h ChildView.cpp
4.5.2流式套接字通信原理
流式套接字因其可靠性高而得到广泛的应用.其通信原理为:服务端和客户端都必
须建立通信套接字,而且服务端应先进入监听状态,然后客户端套接字发出连接请求,
服务端收到请求后,建立另一个套接字进行通信,原来负责监听的套接字仍进行监听,
如果有其他客户发来连接请求,则再建立一个套接字.默认状态下最多可同时接收5个客户的连接请求,并建立通信关系.
4.5.3定义MySocket类
为了实现套接字的网络异步通信,通过异步套接字类CAsycnSocket派生出两个新类.代码的生成可以利用ClassWizard来建立程序框架,给两个派生类取名为MySocket和ServeSocket,生成时使用的基类为CAsycnSocket,并可将它们放在同一组文件中(本例是放在MySocket.h和MySocket.cpp中).接着在ClassWizard中为MySocket类加入OnAccept()和OnReceive()两个函数;为ServeSocket类加入OnReceive()函数.注意,这些函数都是重载函数,不能随便给其命名,加入函数的方法是:在ClassWizard的Object Ids窗口中选中最后一行,然后在Message窗口中选择相应的函数即可.
两个派生类的功能是:MySocket类用于在服务端和客户端建立套接字,分别用于监
听和通信;ServeSocket类用于在服务端建立通信套接字,它是在服务端监听到连接请求
后才建立的,因此本例中将它作为MySocket类的成员变量.为了使服务端能响应多个客
户的请求,可以建立5个ServeSocket类型的套接字,并设立一个记录器,记录已经收到的请求个数,该记录器在MySocket的构造函数中被置为0.
完成异步通信的关键在于上述三个重载函数,它们从网络中传来信息时,可以被自
动调用,以完成接收工作.在本例中,OnAccept()函数在收到连接请求后,会向客户发
出一个代表其序号的信息;两个OnReceive()函数都进行提示,并在确认后将收到的信息
发送回去.
4.5.4完成服务端或客户端的设置
通过菜单项完成的设置工作可以有多种安排方法,本例为了便于显示,将设置工作
安排在CChildView类中.首先用资源编辑器在主菜单中增加Server和Client两个选项,
并定义它们的ID,然后用ClassWizard在CChildView类中增加对这两个ID的响应函数,并在其中分别创建套接字后进入监听或开始连接.为了便于观察工作进程,可在其中增加相应的输出语句,另外,在ChildView.h和ChildView.cpp文件前面必须有#include "mysocket.h"语句.
4.5.5程序的使用
本程序可以在同一网络中的不同主机之间进行异步通信.以两台主机为例,首先
在指定的主机上启动本程序,并在菜单中选择Server选项,使程序进入监听状态;然
后在另一主机上启动本程序并选择Client选项,向服务端发出连接请求;服务端收到
连接请求后,自动调用OnAccept()函数,根据客户端的请求顺序向其发出相应信息;
客户端接收到服务端发出的信息后,在屏幕上显示一个提示框,按下"确认"按钮后,
客户端将此信息发回服务端;服务端收到客户端发回的信息后,处理方式与客户端相同,
就是这样实现了这个信息在两台计算机之间的来回传递.
运行本程序并选择作为服务端时最多可以同时接收五个客户的请求,因此可以同时
运行本程序的六个实例,其中一个设置为服务端,另外五个设置为客户端.由于服务端
实际上是用五个套接字分别与客户端通信,因此点对点的通信过程将会互不干扰地进行.
4.6各模块的具体实现
4.6.1连接模块
//建立连接
bool CSocketComm::ConnectTo(LPCTSTR strDestination, LPCTSTR strServiceName, int nProtocol, int nType)
{ // 如果socket已经打开
if ( IsOpen() )
return false;
SOCKADDR_IN sockAddr = { 0 };
//创建一个socket
SOCKET sock = socket(nProtocol, nType, 0);
if (INVALID_SOCKET != sock)
{ // 让socket绑定一个地址
TCHAR strHost[HOSTNAME_SIZE] = { 0 };
if(false==CSocketComm::GetLocalName(strHost,sizeof(strHost)/sizeof(TCHAR)))
{ closesocket( sock );
return false;
}
//AfxMessageBox(strHost);
sockAddr.sin_addr.s_addr = htonl( CSocketComm::GetIPAddress( strHost ) );
sockAddr.sin_family = nProtocol;
if (SOCKET_ERROR == bind(sock, (LPSOCKADDR)&sockAddr, sizeof(SOCKADDR_IN)))
{ closesocket( sock );
return false;
}
4.6.2软件启动模块
Socket 初使化
//初使花Socket数组
For(int i=0;i<=50;i++)
Msgsock=null;
//创建Socket
Sock= Socket(AF_INET,SOCK_STREAM,0);
//绑定
If(bind(Sock,(sockaddr*)&amp;serv,addlen))
{m_edit.SetWindowTest(&quot;绑定错误&quot;);
}else
{//显示提示信息,表示服务器筹建成功
M_edit.WetWindowTest(&quot;服务器筹建成功&quot;);
//开始侦听
Listen(sock,5);
//调用线程
AfxBeguinThread(&amp;thread,0);
}
Return TRUE;
}
4.6.3发送消息模块
功能及原理:该模块实现发送和接受字符串数据的功能是实现聊天功能的基础,它也是发送文件功能实现的一个必不可少的环节.采用异步函数调用的消息响应机制来实现.
4.6.4文件传输模块
4.6.4屏幕抓图模块
功能还没有实现
第五章 关键技术介绍
5.1 TCP/IP协议
计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS,用的就是TCP协议;UDP是无连接的,通信双方都不保持对方的状态,浏览器访问Internet时使用的HTTP协议就是基于UDP协议的.TCP和UDP协议都非常复杂,尤其是TCP协议,为了保证网络传输的正确性和有效性,必须进行一系列复杂的纠错和排序等处理.网络协议分为如下四层:
1)网络接口层:负责接收和发送物理帧;
2)网络层:负责相邻节点之间的通信;
3)传输层:负责起点到终端的通信;
4)应用层:提供诸如文件传输,电子邮件等应用程序要把数据以TCP/I崐P协议方式从一台计算机传送到另一台计算机,数据需经过上述四层通信软件的崐处理才能在物理网络中传输.
5.2 Socket介绍
Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,套接字(Socket)最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口,随着UNIX操作系统的广泛使用,套接字成为当前最流行的网络通信应用程序接口之一.90年代初,由Sun Microsystems,JSB Corporation,FTP software,Microdyne和Microsoft等几家公司共同制定了一套标准,即Windows Sockets规范.它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个&quot;通道&quot;进行通信,那么这个&quot;通道&quot;的两端就是两个套接字.套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能微软的Windows Socket规范(简称winsock)对Berkley的套接字规范进行了扩展,利用标准的Socket的方法,可以同任何平台上的Socket进行通信;利用扩展,可以更有效地实现在Windows平台上计算机间的通信.
5.3 Windows Sockets API介绍
Windows Sockets API是Microsoft Windows的网络程序设计接口,它在继承了Berkeley Sockets主要特征的基础上,又对它进行了重要扩充.这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制 .这些扩充有利于应用程序开发者编制符合Windows编程模式的软件,它使在Windows下开发高性能的网络通信程序成为可能.
5.4 应用程序与Windows Sockets关系
应用程序调用Windows Sockets的API实现相互之间的通讯.Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作.它们之间的关系如图1-1.
5.4 Windows Sockets编程原理
由于Windows的基于消息的特点,WINSOCK和BSD套接口相比,有如下一些新的扩充:
5.4.1异步选择机制
异步选择函数WSAAsyncSelect()允许应用程序提名一个或多个感兴趣的网络事件,如FD_READ,FD_WRITE,FD_CONNECT,FD_ACCEPT等等代表的网络事件.当被提名的网络事件发生时,Windows应用程序的窗口函数将收到一个消息.这样就可以实现事件驱动了.
5.4.2异步请求函数
异步请求函数允许应用程序用异步方式获得请求的信息,如WSAAsyncGetXByY()类函数. 这些函数是对BSD标准函数的扩充.函数WSACancelAsyncRequest()允许用户中止一个正在执行的异步请求.
5.4.3阻塞处理方法
WINSOCK提供了&quot;钩子函数&quot;负责处理Windows消息,使Windows的消息循环能够继续.WINSOCK提供了两个函数(WSASetBlockingHook()和WSAUnhookBlockingHook())让应用程序设置或取消自己的&quot;钩子函数&quot;.函数WSAIsBlocking()可以检测是否阻塞,函数WSACancelBlockingCall()可以取消一个阻塞的调用.
5.4.4错误处理
WINSOCK提供了两个WSAGetLastError()和WSASetLastError()来获取和设置最近错误号.
5.4.5启动和终止
由于Windows Sockets的服务是以动态连接库WINSOCK.DLL形式实现的,所以必须要先调用WSAStartup()函数对Windows Sockets DLL进行初始化,协商WINSOCK的版本支持,并分配必要的资源.在应用程序关闭套接口后,还应调用WSACleanup()终止对Windows Sockets DLL的使用,并释放资源,以备下一次使用.
第六章,使用Visual C++ 6.0进行Windows Sockets程序
开发的其它技术要点
针对使用Visual C++ 6.0进行Windows Sockets应用程序开发,需要注意以下几点:
1) 同常规编程一样,无论服务器方还是客户方应用程序都要进行所谓的初始化处理,如Addr,port缺省值的设定等,这部分工作仍可采用消息驱动机制来先期完成.
2)一般情况下,网络通信程序是某应用程序中的一个模块.在单独调试网络通信程序时,要尽量与采用该通信模块的其它应用程序开发者约定好,统一采用一种界面形式,即单文档界面SDI,多文档界面MDI和基于对话框界面中的一种(这在使用AppWizard形成项目[Project]文件时有提示),尽管这并非必须,但可使通信模块在移植到所需的应用程序时省时省力,因为Visual C++ 6.0这种可视化语言在给我们提供方便的同时,也给我们带来某些不便,譬如所形成的项目文件中的许多相关文件与所采用的界面形式密切联系,许多消息驱动功能,随所采用的界面形式不同而各异.当然,也可将通信模块函数化,并形成一个动态连接库文件(DLL文件),供主程序调用.
3)以通信程序作为其中一个模块的应用程序往往不是在等待数据发送或接收完之后再做其它工作,因而在主程序中要采用多线程(Multithreaded)技术.即将数据的发或收,放在一个具有一定优先级的辅助线程中,在数据发或收期间,主程序仍可进行其它工作,譬如利用上一个周期收到的数据绘制曲线 .Visual C++ 6.0中的MFC提供了许多有关启动线程,管理线程,同步化线程,终止线程等功能函数.
4)在许多情况下,要求通信模块应实时地收,发数据.譬如调用之的主程序以0.5秒为一周期,在这段时间内 ,要进行如下工作:接收数据,利用收到的数据进行运算,将运算结果发送到其它计算机节点,周而复始.我们在充分利用Windows Sockets的基于消息的网络事件异步选择机制,用消息来驱动数据的发送和接收的基础上,结合使用其他措施,如将数据的收和发放在高优先级线程,在软件设计上,安排好时序,尽量避免在同一时间内,双方都在向对方发送大量数据的情况发生,保证网络要有足够的带宽等,成功地实现了数据传输的实时性.
5)客户与服务器的关系是不对称的.对于TCP C/S,服务器首先启动,然后在某一时刻启动客户与服务器建立连接.服务器与客户开始都必须调用socket()建立一个套接字socket,然后服务器调用bind()将套接字与一个本地网络地址捆扎在一起,再调用listen()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长度,之后服务器就可以调用accept()来接收客户连接.客户打开套接字之后,便可通过调用conne ct()和服务器建立连接.连接建立之后,客户和服务器之间就可以通过连接发送和接收数据.最后,待数据传送结束,双方调用closesocket()关闭套接字.对于UDP C/S,客户并不与服务器建立一个连接,而仅仅给服务器发送一张包含服务器地址的数据报.相似地,服务器也不从客户端接收一个连接,只是调用函数recvfrom,等待从客户端来的数据.依照recvfrom返回的协议地址以及数据报,服务器就可以给客户送一个应答.
第七章 系统存在的问题及改进方向
由于时间有限,我们开发的基于C/S结构的局域网通信软件肯定存在缺陷.如对客户端的身份没有进行验证,不能实现服务端对所有的客户端进行广播等.
随着网络技术的发展,基于C/S结构的局域网通信软件必将得到进一步广泛的应用.其存在的某些问题也将得到进一步的完善.
本文探讨了开发基于C/S结构的局域网通信软件的相关技术,详细描述了这一软件的编程方案,并在此基础上,对基于C/S结构的局域网通信软件的进一步完善提出了看法.由于时间有限,所开发的基于C/S结构的局域网通信软件还不能达到产品化的要求,并且适用范围也比较狭窄,还存在一些性能上的问题需要进一步解决.要真正市场化,还需要借鉴现有局域网通信软件产品化的一些经验,对开发的系统做进一步的完善,包装.
此课题可作为公司的实际应用项目,在此平台上,实现企业内部电子化的信息交流,提高了工作效率,开发具有现实的意义.我在此次设计中已经比较熟练地掌握了最新的软件开发平台和开发语言,对网络传输,数据库编程,多线程运用和XML技术的运用等等有了比较深的了解.
第八章 致谢语
本论文是在林斌老师的指导下完成的,在论文的选题及其写作思路上林斌老师多次给予我指导,两次修改论文提纲.当完成了这篇论文的初稿之后,林斌老师不顾自身工作繁忙,在百忙中挤出时间,仔细地阅读了论文初稿,出了许多珍贵的修改意见.在本次毕业论文的编写过程中,能得到林斌老师的指导使我感到非常的荣幸,林斌老师严谨的治学作风,高尚的学术品质,热情的待人态度给我留下了深刻的影响,在完成论文之际,在此向林斌老师表示衷心的致谢.
在论文的整理,资料的收集,图文的处理等方面,得到了本班同学的积极帮助,占用了他们许多宝贵时间,在此也向他们表示由衷的感谢.
由于论文是在校外实习单位完成的,在写作过程中得到古田移动分公司综合室李主任等人的帮助,在此一并向他们致以衷心的感谢.
参考文献
(1)汪晓平,钟军等编著,&quot;VC++网络通信协议分析与应用实现&quot;,人民邮电出版社,2003年.
(2)陈雄勇编著,&quot;Visual C++6.0 实用教程&quot;,中国铁道出版社,2003年.
(3)博嘉科技编写,&quot;Visual C++6.0网络编程实作教程&quot;,北京希望电子出版社,2001年.
(4)施炜,李铮,秦颍编著,&quot;Windows Sockets 规范及应用-Windows网络编程接口&quot;,1996年.
(5)杨文龙著,&quot;软件工程&quot;,电子工业出版社,1999年.
(6)杨大全,拱长青,董伟嗣,范艳芳著,&quot;Socket编程术&quot;, 沈阳工业大学学报,2000年.
(7)胡峪,刘静编著,&quot;VC++ 编程技巧与示例&quot;,西安电子科技大学出版,2000年.
(8)Davis Chapman著,&quot;VC++.NET入门&quot;,中国电力出版社,2003年.
(9)辛长安,梅林编著,&quot;VC++编程技术与难点剖析&quot;,清华大学出版社,2002年.
(10)兰芸编著,&quot;Visual C++ 6.0编程实例精解&quot;,北京希望电子出版社,2000年.
(11)(美)威谦姆斯著,&quot;Visual C++ 6 24学时学习教程&quot;,机械工业出版社,1999年.
(12)齐舒创作室编著,&quot;Visual C++ 6.0编程技巧与实例分析&quot;,中国水利水电出版社,1999年.
福建工程学院计算机与信息科学系2004毕业论文 朱标 网络011-18 指导老师:林斌
第 页 共 15 页
福建工程学院计算机与信息科学系2004毕业论文 朱标 网络011-18 指导老师:林斌
第 页 共 15 页
开始
需求分析,了解系统要求
根据需求进行系统选型
进行概要设计,确定设计计划
用户界面设计
程序模块设计
系统测试
文档编写
结束
通过事件传递内容
传递信息模块
连接功能模块
传递信息模块
文件传输模块
文件传输模块
连接功能模块
 
哇,这么多
socket是的tcp/ip协议的一个api的集合
udp是tcp/ip的一个协议
http是tcp/ip协议tcp协议的一个应用
看你用什么协议写了
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
824
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部