全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP/IP 网络套接字编程目的及要求:掌握TCP/IP网络套接字编程的工作原理,学会使用Winsock编制网络会话程序。实践方法: 1. 阅读文档,熟悉TCP/IP网络套接字编程的工作原理,参考本实验后附录的客户与服务器程序简例,实验前事先改编一个DOS命令行方式下的网络会话程序,要求双方能交替打入任意语句(一方打入语句后,停止、等待另一方回答,待对方回答后,再打入另一语句,直至任一方键入一个ESC键为止,结束会话); 2. 使用 C+ Builder,输入、编辑、编译、运行与调试网络会话程序;实践内容:(1)写出改编的 C+ Builder 网络会话源程序。头文件HEAD.H内容: #define IDM_STRAT 200 #define IDM_EDIT 200 class Mainwnd:public CFrame Wnd public:Mainwnd(); afx_msg int OnCreat(LPCREATESTRUCT); afx_msg void OnStart(void); DECLARE_MESSAGE_MAP(); private:Cstatic CSStatic; CEdit LineEdit; CButten StartButton; class PengApp:public CWinApp public:BOOL InitInstance(); 源程序Client.CPP清单: #include #include #include head.h const int nPort=13; PengApp theApp; Main Wnd:Main Wnd() if(!Create (NULL,Communication Program,WS_OVERLAPPEDWINDOW,rectDefaul t) AfxAbort(); int Mainwnd:OnCreate(LPCREATESTRUCT) Rect rect;SetRect(& rect,80,50,160,70); Create(Host Name:,WS_CHILD|WS_VISIBLE|SS_LEFT,rect,this); SetRect(& rect,60,80,180,100); LineEdit.Create(WS_CHILD|WS_VISIBLE|WS_DLGFRAME|ES_LEFT,rect,this,IDM_ED IT); SetRect(&rect,100,120,140,140); StartButton,Create(start,WS_CHILD|VS_VISIBLE|BS_PUSHBUTTON,rect,this,I DM_START); return 0; BEGIN_MESSAGE_MAP(Main Wnd,CFrameWnd) ON_WM_CREATE() ON_BN_CLICKED(IDM_START,OnStart) END_MESSAGE_MAP() BOOL ControlApp:InitInstance() m_pMainWnd=new Main Wnd(); m_pMainWndShowWindow (m_nCmdShow); m_pMainWndUpdateWindow(); return; Void Main Wnd:Onstart(void) CSocket TimeClient; if(! AfxSocketInit() MessageBox(WindowsSocket initial failed!,Receiv e,MB_ICONSTOP); if(! TimeClient.Create() MessageBox(ReceiveSocket create failed,Rece ive,MB_I(ON)STOP); else TimeClient.connect(strAddr,nPort); TimeClient.ReceiveFrom(csReceiveText,csCounts,LineEdit.GetWinText,nPort) MessageBox(TimeClient.csReceiveText); TimeClient.Close();(2)运行、测试网络会话程序,记录测试结果,分析遇到的问题与解决的办法。客户与服务器的关系是不对称的。对于TCP C/S,服务器首先启动,然后在某一时刻启动客户与服务器建立连接。服务器与客户开始都必须调用socket()建立一个套接字socket,然后服务器调用bind()将套接字与一个本地网络地址捆扎在一起,再调用listen()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长度,之后服务器就可以调用accept()来接收客户连接。客户打开套接字之后,便可通过调用conne ct()和服务器建立连接。连接建立之后,客户和服务器之间就可以通过连接发送和接收数据。最后,待数据传送结束,双方调用closesocket()关闭套接字。对于UDP C/S,客户并不与服务器建立一个连接,而仅仅给服务器发送一张包含服务器地址的数据报。相似地,服务器也不从客户端接收一个连接,只是调用函数recvfrom,等待从客户端来的数据。依照recvfrom返回的协议地址以及数据报,服务器就可以给客户送一个应答。(3)总结 TCP/IP 网络套接字编程的一般编程步骤。 1)BOOL Create (UINT nSocketPort=0,int nSocketType=SOCK_STREAM,long lEve nt=FD_READ|FD_WRITE|FD_OOD|FD_ACCEPT|FD_CONNECT|FD_CLOSE|,LPCTSTR|lpszSocket Address=NULL 该函数用来建立Socket。 (2)BOOL Bind(UINT nSocketPort,LPCTSTR lpszSocketAddess=NULL) 该函数的作用是将Socket端口与网络地址连接起来。 (3)BOOL Listen(int nConnectionBacklog=5) 该函数的作用是等待Socket请求。 (4)Virtual BOOL Accept(CAsyncSocket & rConnected Socket,Socket,SOCKADDR* lpSock Addr=NULL,int * lpSock AddrLen=NULL) 该函数的作用是取得队列上第一个连接请求并建立一个具有与Socket相同特性的套接字。 (5)BOOL Connect (LPCTSTR lpszHostAddress,UINT nHostPort) 该函数的作用是提出请求。其中,lpszHostAddress和nHostPort为接受请求进程的网络地址和Socket端口号。 (6)virtual
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮服务基础知识培训试题及答案
- 药品管理法的试题带答案
- 2026-2031年中国牛奶市场分析预测及前景趋势报告
- 服装省级代理合同范本
- 森林抚育合同协议书
- 基于标签语义的图像显著性区域检测算法:原理、创新与应用
- 2026-2031全球及中国电子打火机行业市场发展分析及前景趋势与投资发展研究报告
- 基于李雅普诺夫函数的双星编队控制策略与应用研究
- 基于机器视觉的轮毂型号自动识别系统关键技术与应用研究
- 基于机器视觉的在线高精度零件测量关键技术及方法探索
- 精神科探视管理课件
- 传染病诊断标准
- 胆总管结石伴急性化脓性梗阻性胆管炎的护理课件
- 云南罚没财物管理办法
- 郡县制教学课件
- 颈动脉狭窄个案护理
- 2025年新疆中考数学试题(含答案)
- 口腔拔牙病例诊疗规范
- 2024年广东省清远市事业单位招聘考试《公共基础知识》真题库及答案
- D级压力容器质量管理体系内审资料符合TSG07-2019附录M
- 大数据与会计专业职业生涯规划书3400字数
评论
0/150
提交评论