tcp网络编程罗鹏飞200910404214

上传人:m**** 文档编号:563882741 上传时间:2022-12-29 格式:DOCX 页数:12 大小:74.58KB
返回 下载 相关 举报
tcp网络编程罗鹏飞200910404214_第1页
第1页 / 共12页
tcp网络编程罗鹏飞200910404214_第2页
第2页 / 共12页
tcp网络编程罗鹏飞200910404214_第3页
第3页 / 共12页
tcp网络编程罗鹏飞200910404214_第4页
第4页 / 共12页
tcp网络编程罗鹏飞200910404214_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《tcp网络编程罗鹏飞200910404214》由会员分享,可在线阅读,更多相关《tcp网络编程罗鹏飞200910404214(12页珍藏版)》请在金锄头文库上搜索。

1、网络编程大作业学院:信息工程及自动化 专业:通信工程班级:092学号:200910404214姓名:罗鹏飞成绩:在TCP网络编程中,最核心的就是TCP编程理念,所以在此我选择了 TCP 标准框架-客户端和服务端的程序设计进行分析。本系统是一种基于Socket 的局域网通信工具的设计与实现方法。基于Socket的局域网通信软件可以为局 域网提供一种良好,安全,快速的通信机制。它的实现无需对原有的局域网硬件 进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负 荷,提高局域网的使用效率,可以很好地解决局域网的各种通信需求。主要使 用的是套接字的方式,套接字是一种支持TCP/IP网

2、络通信的简单单元,要通过 Internet进行通信,至少 需要一对套接字,其中一个运行 在客户端,称之 为ClientSocket,另一个运行于服务器端面,称 为ServerSocket。根据连 接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三 个步骤:服务器监听、客户端请求、连接确认(为tcp的基本思想)。服务 器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连 接的状态,实时监控网络状态。客户端请求是由客户端的套接字提出连接 请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先 描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然 后再

3、向服务器端套接字提出连接请求。连接确认是当服务器端套接字监听 到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请 求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客 户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续 接收其他客户端的连接请求。通过标准框架编写TCP服务器与客户端合成的 工程软件步骤:客户端程序包括程序文件client.dsw 资源文件client.rc。界面文件服务器端程序包括 程序文件server.dsw资源文件server.rc。界面文件在以下两个头文件ServerSocket.h:ClientSocket.h:中加入服务器 窗体

4、的对象指针CTransFileDlg* m_pDlg;在ServerSocket.cpp文件中函数:void CServerSocket:OnAccept(int nErrorCode) m_pDlg-AcceptConnection();为接到TCP客户端CONNECT请求后服务器自动执行的相应函数。void CServerSocket:OnReceive(int nErrorCode)m_pDlg-ReceiveDa ta();为接到TCP客户端SEND发送的数据后,服务器自动执行的接 收函数。 在ClientSocket.cpp文件中 函数void CClientSocket:OnRec

5、eive(int nErrorCode)m_pDlg-SendFileData();为接到TCP服务器SEND发送的数据后,客户端自动执行的接 收函数。在TransFileDlg.h (对话框的类头文 件)定义:CServerSocke t* m_pServerSock; /为负责服务器监听和响应客户端连接请求的SOCKET对象指针。CServerSocket* m_ServerSock; / 为负责和客户端进行数据通信 (RECEIVE、SEND)SOCKET 对象指针。CClientSocket* m_pSendSock; /为负责客户端向 服务器端发起连接请求,连接成功后又通过它和服务器

6、建立通信 链路(SEND,RECEIVE )进行 发送和接收。在文件 TransFileDlg.cpp 中 BOOL CTransFileDlg:OnInitDialogO窗体初始化函数加入m_pServerSock = new CServerSocke t(t his);/创建扌旨针m_ServerSock = new CServerSocket(this);m_pSendSock = new CClientSocket(this);m_pServerSock-Create(SERVERPORT);/服务器 SOCKET绑定m_pSendSock-Create(CLIENTPORT);/客户

7、端 SOCKET绑定if (!m_pServerSock-Lis ten() /服务器开始监听MessageBox(监听失败);在本事件(发 送按钮)激发函数中建立客户端向服务器的连接,并发送数据。void CTransFileDlg:OnButtontrans()if (m_Send二二FALSE)m_pSendSock-Close();m_pSendSock-Create(CLIENTPORT);if (!m_pSendSock-Connect(host,SERVERPORT)int aa = m_pSendSockGetLastError();m_SendFile.Close();m_p

8、SendSock-Close();m_pSendSock-Create(CLIENTPORT);MessageBox(连接失败);m_Send = FALSE;return;Set Timer(l,2000,NULL);/发送文件信息m_SendNum = 0; m_pSendSock-Send(fileinfo,MAX_PATH+4);m_SendLen = 0;LocalFree(fileinfo);elseMessageBox(当前发送任务没有完成);本函数实现服务器相应客户端的连接,并创建 和客户端通信的通路: void CTransFileDlg:AcceptConnection()

9、m_ServerSock-Close();m_pServerSockAccept(*m_ServerSock);服务器接收到数据后的对应处理函数:void CTransFileDlg:ReceiveData()客户端接收到数据后的对应处理函数:void CTransFileDlg:SendFileData()客服端程序:ClientDlg.cpp :#include stdafx.h#include Client.h#include ClientDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FIL

10、E = _FILE_;#endifpMysocket = new CMysocket(this); / 创建套接字对象讦(!pMysocket-Create() / 创建套接字delete pMysocket;MessageBox(套接字创建失败.);return false;return TRUE;void CClientDlg:OnSysCommand(UINT nID, LPARAM IParam)讦(nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nI

11、D, IParam);void CClientDlg:ReceiveData()char buffer200;/接收传来的数据int factdata = pMysocket-Receive(buffer,200);bufferfactdata = 0;CString str;str.Format(%s,buffer);SetDlgItemText(IDC_EDIT4,str);void CClientDlg:OnButtonjoin() / 点击连接/ TODO: Add your control notification handler code hereUpdateData(true);

12、CString servername = m_servername; /读取服务器名称int port;port = 70; / 获取端口if(!pMysocket-Connect(servername,port) /连接服务器,如果没有连接到服务器名称、端口号,连接服务器失败MessageBox(连接服务器失败!);return;CString str;str.Format(%s%s,m_name,进入聊天室);/打出字昵称进入聊天室pMysocket-Send(str.GetBuffer(0),str.GetLength(); GetDlgItem(IDC_BUTTONJOIN)-Enab

13、leWindow(FALSE);void CClientDlg:OnButton2() / 点击发送CString str,temp,strl;m_ info.GetWindowText(str);if(str.IsEmpty()lm_name.IsEmpty()return;temp.Format(%s 说:%s,m_name,str);pMysocket-Send(str.GetBuffer(str.GetLength(),str.GetLength();Mysocket.cpp :void CMysocket:OnReceive(int nErrorCode)讦(pClientd lg)

14、pClientd lg-ReceiveData();/调用主对话框的ReceiveData方法接收数据CSocket:OnReceive(nErrorCode);服务端程序:ServerDlg.cpp :#include stdafx.h#include Server.h#include ServerDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifvoid CServerDlg:AcceptConnect() 服务器接受客户端的连接CClientSocket* socket = new CClientSocket(this);/创建与客 户端通信的端口讦(m_pSocket-Accept(*socket) 如果 SOCKET 对象指针接受这个端口, 则响应客户端连接请求return;elsedelete socket;void CServerDlg:OnButton1() / 点击监听/ TODO: Add your control notification handler code herem_pSocket = new CServerSocke

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号