预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

TCP/IP网络套接字编程 目的及要求:掌握TCP/IP网络套接字编程的工作原理,学会使用Winsock编制网络会话程序。 实践方法:1.阅读文档,熟悉TCP/IP网络套接字编程的工作原理,参考本实验后附录的客户与服务器程序简例,实验前事先改编一个DOS命令行方式下的网络会话程序,要求双方能交替打入任意语句(一方打入语句后,停止、等待另一方回答,待对方回答后,再打入另一语句……,直至任一方键入一个ESC键为止,结束会话); 2.使用C++Builder,输入、编辑、编译、运行与调试网络会话程序; 实践内容: (1)写出改编的C++Builder网络会话源程序。 头文件HEAD.H内容: #defineIDM_STRAT200 #defineIDM_EDIT200 classMainwnd:publicCFrameWnd {public:Mainwnd(); afx_msgintOnCreat(LPCREATESTRUCT); afx_msgvoidOnStart(void); DECLARE_MESSAGE_MAP(); private:CstaticCSStatic; CEditLineEdit; CButtenStartButton;}; classPengApp:publicCWinApp {public:BOOLInitInstance();} 源程序Client.CPP清单: #include<afxwin.h> #include<winsock.h> #include"head.h" constintnPort=13; PengApptheApp; MainWnd:MainWnd() {if(!Create(NULL,"CommunicationProgram",WS_OVERLAPPEDW INDOW,rectDefault))AfxAbort();} intMainwnd:OnCreate(LPCREATESTRUCT) {Rectrect;SetRect(&rect,80,50,160,70); Create("HostName:",WS_CHILD|WS_VISIBLE|SS_LEFT,rect,thi s); SetRect(&rect,60,80,180,100); LineEdit.Create(WS_CHILD|WS_VISIBLE|WS_DLGFRAME|ES_LEFT, rect,this,IDM_EDIT); SetRect(&rect,100,120,140,140); StartButton,Create("start",WS_CHILD|VS_VISIBLE|BS_PUSHBU TTON,rect,this,IDM_START); return0;} BEGIN_MESSAGE_MAP(MainWnd,CFrameWnd) ON_WM_CREATE() ON_BN_CLICKED(IDM_START,OnStart) END_MESSAGE_MAP() BOOLControlApp:InitInstance() {m_pMainWnd=newMainWnd(); m_pMainWnd→ShowWindow(m_nCmdShow); m_pMainWnd→UpdateWindow(); return;} VoidMainWnd:Onstart(void) {CSocketTimeClient; if(!AfxSocketInit())MessageBox("WindowsSocketinitial failed!","Receive",MB_ICONSTOP); if(!TimeClient.Create())MessageBox("ReceiveSocketcrea tefailed","Receive",MB_I(ON)STOP); elseTimeClient.connect(strAddr,nPort); TimeClient.ReceiveFrom(csReceiveText,csCounts,LineEdit.G etWinText,nPort) MessageBox(TimeClient.csReceiveText); TimeClient.Close();} (2)运行、测试网络会话程序,记录测试结果,分析遇到的问题与解决的办法。 客户与服务器的关系是不对称的。对于TCPC/S, 服务器首先启动,然后在某一时刻启动客户与服务器建立连接。服务 器与客户开始都必须调用socket()建立一个套接字socket,然后服务 器调用bind()将套接字与一个本地网络地址捆扎在一起,再调用liste n()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长 度,之后服务器就可