功能服务器先初始化,客户端选择一个人间发送给服务器,.docVIP

  • 1
  • 0
  • 约4.61千字
  • 约 8页
  • 2018-11-29 发布于天津
  • 举报

功能服务器先初始化,客户端选择一个人间发送给服务器,.doc

功能服务器先初始化,客户端选择一个人间发送给服务器,

功能:服务器先初始化,客户端选择一个人间发送给服务器,服务器接收客户端的信息,并存储。 1、服务器端代码: (A)在ftpserverDlg.cpp文件中的声明、全局变量的定义等如下所示: #define WM_MSG_LISTENING WM_USER+1 #define WM_MSG_BIND WM_USER+2 #define WM_MSG_ACCEPT WM_USER+3 #define WM_MSG_RECV WM_USER+4 #define WM_MSG_FINISHED WM_USER+5 CString g_csTips; HWND g_hWnd; DWORD WINAPI Thread_RecvFile(PVOID lParam);//自定义函数ThreadRecvFile (B)在ftpserverDlg,h中定义的成员变量的定义如下所示: protected: virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); (C)在BOOL CftpserverDlg::OnInitDialog()添加代码如下: g_hWnd=CftpserverDlg::m_hWnd; (D)初始化按钮的代码如下所示: //创建一个线程函数,名称为ThreadRecvFile CreateThread(NULL,0,Thread_RecvFile,NULL,0,NULL); (E)Thread_RecvFile()函数的代码如下所示: DWORD WINAPI Thread_RecvFile(LPVOID lParam) { //定义套接字 SOCKET sock; sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //定义sockaddr_in类型的结构体变量 sockaddr_in sa; sa.sin_family=AF_INET; sa.sin_addr.S_un.S_addr=inet_addr(); sa.sin_port=htons(8888); //绑定指定的地址和一个套接字成功 if((bind(sock,(sockaddr*)sa,sizeof(sa)))!=SOCKET_ERROR) { SendMessage(g_hWnd,WM_MSG_BIND,0,0);//显示已经绑定到指定端口 } //指示一个套接字等待连接 if((listen(sock,SOMAXCONN))!=SOCKET_ERROR) { SendMessage(g_hWnd,WM_MSG_LISTENING,0,0);//显示正在监听等待客户连接 } SOCKET socknew; socknew=accept(sock,NULL,0); if(socknew!=SOCKET_ERROR) { SendMessage(g_hWnd,WM_MSG_ACCEPT,0,0); } closesocket(sock); CString csPathFile;//表示文件的路径的变量 csPathFile=e://1.txt; CFile fDst; fDst.Open(csPathFile,CFile::modeCreate|CFile::modeWrite); char szBuf[1024]; SendMessage(g_hWnd,WM_MSG_RECV,0,0);//发送文件正在接受的消息 int rnet;//接受客户端发送的文件 while((rnet=recv(socknew,szBuf,1024,0))0)//接受到的文件不为空 { fDst.Write(szBuf,rnet);//将接收到的内容写入缓冲区szBuf } closesocket(socknew); fDst.Close();//关闭文件 SendMessage(g_hWnd,WM_MSG_FINISHED,0,0);//发送一条文件传输完毕的消息 return(0); } (F)WindowProc代码如下所示: LRESULT CftpserverDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_MSG_LISTENING: g_csTips+=\r\n正在侦听......; SetDlgItemText(IDC_EDIT1,g_csTips); break; case WM_MSG_

文档评论(0)

1亿VIP精品文档

相关文档