收藏 分销(赏)

TCPIP 网络套接字编程.doc

上传人:pc****0 文档编号:6273638 上传时间:2024-12-04 格式:DOC 页数:4 大小:33KB 下载积分:10 金币
下载 相关 举报
TCPIP 网络套接字编程.doc_第1页
第1页 / 共4页
TCPIP 网络套接字编程.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
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<afxwin.h> #include<winsock.h> #include "head.h" const int nPort=13; PengApp theApp; Main Wnd:Main Wnd() {if(!Create (NULL,"Communication Program",WS_OVERLAPPEDW INDOW,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,thi s); 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_PUSHBU TTON,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_pMainWnd→ShowWindow (m_nCmdShow); m_pMainWnd→UpdateWindow(); return;} Void Main Wnd:Onstart(void) {CSocket TimeClient; if(! AfxSocketInit()) MessageBox("WindowsSocket initial failed!","Receiv e",MB_ICONSTOP); if(! TimeClient.Create()) MessageBox("ReceiveSocket crea te failed","Rece ive",MB_I(ON)STOP); else TimeClient.connect(strAddr,nPort); TimeClient.ReceiveFrom(csReceiveText,csCounts,LineEdit.G etWinText,nPort) MessageBox(TimeClient.csReceiveText); TimeClient.Close();} (2)运行、测试网络会话程序,记录测试结果,分析遇到的问题与解决的办法。 客户与服务器的关系是不对称的。对于TCP C/S, 服务器首先启动,然后在某一时刻启动客户与服务器建立连接。服务 器与客户开始都必须调用socket()建立一个套接字socket,然后服务 器调用bind()将套接字与一个本地网络地址捆扎在一起,再调用liste n()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长 度,之后服务器就可以调用accept()来接收客户连接。客户打开套接 字之后,便可通过调用conne ct()和服务器建立连接。连接建立之后, 客户和服务器之间就可以通过连接发送和接收数据。最后,待数据传 送结束,双方调用closesocket()关闭套接字。对于UDP C/S,客户并不 与服务器建立一个连接,而仅仅给服务器发送一张包含服务器地址的 数据报。相似地,服务器也不从客户端接收一个连接,只是调用函数re cvfrom,等待从客户端来的数据。依照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_CON NECT|FD_CLOSE|,LPCTSTR|lpszSocket Address=NULL 该函数用来建立Socket。 (2)BOOL Bind(UINT nSocketPort,LPCTSTR lpszSocketAddess=N ULL) 该函数的作用是将Socket端口与网络地址连接起来。 (3)BOOL Listen(int nConnectionBacklog=5) 该函数的作用是等待Socket请求。 (4)Virtual BOOL Accept(CAsyncSocket & rConnected Socket, Socket,SOCKADDR* lpSock Addr=NULL,int * lpSock AddrLen=NULL ) 该函数的作用是取得队列上第一个连接请求并建立一个具有与So cket相同特性的套接字。 (5)BOOL Connect (LPCTSTR lpszHostAddress,UINT nHostPort) 该函数的作用是提出请求。其中,lpszHostAddress和nHostPort 为接受请求进程的网络地址和Socket端口号。 (6)virtual void Close()该函数的作用是关闭Socket。 使用以上类及成员函数,按照以下步骤,就可以设计出合适的通信 程序: Server:Construct→Creat→Bind→Listen→Accept→Send→Clo se; Client:Constuct→Creat→Connect→Receive→Close。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服