`
uk355uk
  • 浏览: 11477 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

C++网络编程之SOCKET应用篇

 
阅读更多

C++网络编程之SOCKET应用篇
2010年06月22日
  思想现代化的重要性
  论编程的递归思想
  谈二叉树的顺序存储与链式存储结构。
  关于图的概念,邻接矩阵的理解。
  关于WIN7中TOP SITES的立体感官。
  关于系统的设计精髓的讨论
  :封装思想,设计模式,STL泛型抽象结构化编程,以及哈夫曼树最优二杈树的实际应用。
  DNS 202.99.160.68
  202.99.168.8
  //winsock2.h
  数据传输方案
  OnInitDialog()
  {
  //创建套接字
  m_Server=socket(AF_INET,SOCK_STREAM,0);
  m_Client=socket(AF_INET,SOCK_STREAM,0);
  if(m_Server==INVALID_SOCKET||m_Client==INVALID_SOCKET)
  {
  MessageBox("套接字创建失败");
  return TRUE;
  }
  WSAAsyncSelect(m_Server,m_hWnd,CM_SOCKETMESSAGE,,FD_ACCEPT);
  char HostName[MAX_PATH];
  memset(HostName,0,MAX_PATH);
  gethostname(HostName,MAX_PATH);
  hostent* HostInfo;
  HostInfo=gethostbyname(HostName);
  CString IP;
  IP=inet_ntoa(*(in_addr*)HostInfo->h_addr_list[0]);
  //绑定套接字
  ServerAddr.sin_port=htons(800);
  ServerAddr.sin_family=PF_INET;
  ServerAddr.sin_addr.S_un.S_addr=inet_addr(IP.GetBuffer(0));
  if(bind(m_Server,(sockaddr*)&ServerAddr,sizeof(ServerAddr)!=0)
  {
  MessageBox("套接字绑定地址绑定错误");
  return TRUE;
  }
  //监听套接字
  listen(m_Servers,5);
  return TRUE;
  };
  //处理连接按钮的事件
  void CReConnectDlg::OnConnect()
  {
  CString port;
  m_ServerPort.GetWindowText(port);
  CString name;
  m_ServerAddr.GetWindowText(name);
  if(port.IsEmpty()||name.IsEmpty())
  {
  MessageBox("请设置服务器信息");
  }
  closesocket(m_Client);
  m_Client=socket(AF_INET,SOCK_STREAM,0);
  sockeaddr_in addr;
  addr.sin_family=AF_INET;
  addr.sin_port=htons(atof(port));
  addr.sin_addr.S_un.S_addr=inet_addr(name);
  if(connect(m_Client,(sockaddr*)&addr,sizeof(ServerAddr)==0)
  {
  MessageBox("连接成功");
  }
  else
  {
  MessageBox("连接失败");
  }
  }
  //处理断开的单击事件
  void CReConnectDlg::OnDisconnect()
  {
  closesocket(m_Client);
  }
  /////////////////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////////////////
  #include "winsock2.h"
  #pragma comment(lib,"ws2_32.lib")
  BOOL CMy001App::InitInstance()
  {
  AfxEnableControlContainer();
  #ifdef_AFXDLL
  Enabel3dControls()
  #else
  Enable3dControlsStatic()
  #endif
  //初始化套接字
  WSADATA wsd;
  WSAStartup(makeword(2,2),&wsd);
  CMy001Dlg dlg;
  m_pMainWnd=&dlg;
  int nResponse=dlg.DoModal();
  if(nResponse==IDOK)
  {}
  else if(nResponse==IDCANCLE)
  {}
  return FALSE;
  }
  //在初始化时创建套接字,并设置套接字端口
  BOOL CMy001Dlg::OnInitDialog()
  {
  CDialog::OnitDialog();
  ASSERT(IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
  ASSERT(IDM_ABOUTBOXAppendMenu(MF_SEPARATOR);
  PSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
  }
  }
  SetIcon(m_hIcon,TRUE);
  SetIcon(m_hIcon,FALSE);
  //创建服务器套接字
  m_ServerSocket=socket(AF_INET,SOCK_STREAM,0);
  m_ClientSocket=socket(AF_INET,SOCKET_STREAM,0);
  if(m_ServerSocket==INVALID_SOCKET||m_ClientSocket==INNVALID_SOCKET)
  return TRUE;
  }
  WSAAsyncSelect(m_ServerSocket,m_hWnd,CM_SOCKETMESSAGE,FD_ACCEPT);
  char HostName[MAX_PATH];
  memset(HostName,0,MAX_PATH);
  gethostname(HostName,MAX_PATH);
  hostent* HostInfo;
  HostInfo=gethostbyname(HostName);
  CString IP;
  IP=inet_ntoa(*(in_addr*)HostInfo->h_addr_list[0]);
  //绑定套接字
  ServerAddr.sin_port=htons(50);
  ServerAddr.sin_family=PF_INET;
  ServerAddr.sin_addr.S_un.S_addr=inet_addr(IP.GetBuffer(0));
  if(bind(m_ServerSocket,(sockaddr*)&ServerAddr.sizeof(ServerAddr)!=0)
  {
  MessageBox("套接字地址绑定错误");
  return TRUE;
  }
  //监听套接字
  listen(m_ServerSocket,5);
  return TRUE;
  }
  //处理连接按钮的单击事件,连接服务器,如果连接超时,将弹出对话框进行提示。
  voidCMy001Dlg::OnConnect()
  {
  CString port;
  m_ServerPort.GetWindwoText(port);
  CString name;
  m_ServerName.GetWindowText(name);
  if(port.IsEmpty()||name.IsEmpty())
  {
  MessageBox("请设置服务器信息");
  return;
  }
  //设置非阻塞方式连接
  unsigned logn flag=1;
  ioctlsocket(m_ClientSocket,FIONBIO,(unsigned long *)&flag);
  sockaddr_in addr;
  addr.sin_family=AF_INET;
  addr.sin_port=htons(atof(port));
  addr.sin_addr.S_un.S_addr=inet_addr(name);
  connect(m_ClientSocket,(sockaddr*)&addr,sizeof(addr));
  struct timeval timeout;
  fd_set sets;
  FD_ZERO(&sets);
  FD_SET(m_ClientSocket,&sets);
  timeout.tv_sec=1;//连接超时15秒
  timeout.tv_usec=0;
  int result-select(0,0,&sets,0,&timeout);
  if(result<=0)
  {
  MessageBox("连接超时");
  }
  else
  {
  MessageBox("连接成功");
  }
  //设置阻塞方式连接
  flag=0;
  ioclsocket(m_ClientSocket,FIONBIO,(unsigned long*)&flag);
  }
  文件传输方案
分享到:
评论

相关推荐

    Visual C++网络编程案例_part2.rar

    第1篇介绍了Visual C++网络开发基础知识,包括Visual C++网络编程概述、Socket套接字编程和多线程与异步套接字编程。第2篇介绍了7大类网络开发典型应用案例的实现,包括FTP客户端实现之一、 FTP客户端实现之二、网页...

    C++socket编程详解

    Visual C++(后面简写为VC)网络编程是指用户使用MFC类库(微软基础类库)在VC编译器中编写程序,以实现网络应用。用户通过VC编程实现的网络软件可以在网络中不同的计算机之间互传文件、图像等信息。本章将向用户...

    Visual C++网络编程案例part1

    第1篇介绍了Visual C++网络开发基础知识,包括Visual C++网络编程概述、Socket套接字编程和多线程与异步套接字编程。第2篇介绍了7大类网络开发典型应用案例的实现,包括FTP客户端实现之一、 FTP客户端实现之二、网页...

    Visual C++高级编程及其项目应用开发[PDF+源代码]

    Visual C++高级编程及其项目应用开发[PDF+源代码] 由浅入深,让大家迅速掌握项目开发思想. VC项目开发的源代码,内容详尽,适合学习VC. 第1章 C++关键语法 第2章 Windows消息及界面设计 第3章 进程与线程 第4章 ...

    Visual C++网络编程经典案例详解.梁伟等.pdf

    《Visual C++网络编程经典案例详解》由浅入深、循序渐进地向读者介绍了Visual C++网络编程的基础知识,并且在此基础上讲解了常见的Visual C++网络编程技术及典型应用案例,最终使读者从根本上提高自身的编程水平,...

    C++网络编程详解

    C++网络编程详解C++网络编程详解C++网络编程详解

    c++ 下Socket编程

    socket即套接字,用于描述地址和端口,是...应用程序通过socket向网络发出请求或者回应。sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);前两种较常用。

    Visual C++网络通信开发入门与编程实践.pdf(中文高清版)及源码

    第1篇介绍了Visual C++网络开发基础知识,包括Visual C++网络编程概述、Socket套接字编程和多线程与异步套接字编程。第2篇介绍了7大类网络开发典型应用案例的实现,包括FTP客户端实现之一、 FTP客户端实现之二、网页...

    VC++使用Socket2网络编程(绝版好书10本)

    VC++使用Socket2网络编程(绝版好书10本) IPv6 Network Programming.pdf Network_Programming_for_Microsoft_Windows_-2 Programming Winsock-Arthur Dumas.pdf TCPIP sockets in C-Practical Guide for Progr ...

    C++实现Socket编程[计算机网络实验].doc

    利用C++语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。修改上述程序,实现服务器根据客户请求,将服务器端...

    c++ socket编程tcp

    tcp编程 vc++ 服务器和客户端都有 vc6.0

    Visual C++6.0网络编程技术

    Internet网络编程方面的基础知识、Sockets套接字、Visual C++开发工具的使用、Casync Socket类和CSocket类、Winsock库函数参考、Sockets、MAPI和Internet、WinInet类库的网络开发、WinInet开发的具体实例、HTML、CGI...

    一个简单的vs c++ socket通讯程序

    建立客户端和客户端c++空项目,分别添加socketClient.cpp和sockServer.cpp, 根据注释配置,编译生成后就可以执行。客户端程序在visual studio 2015和2013上编译通过,服务端程序在visual studio 2015和2008上编译...

    unix 下 C++ socket 编程 + 详细注释

    这是我自己写的UNIX下的C++的简单客户端。源代码中有详细的说明。服务器端也在我的空间可以找到。

    C++Socket编程

    C++网络编程 MFC套接字编程 文件发送程序 信息广播应用程序

    linux下socket can 编程详解

    1、can总线介绍 2、CAN工作原理 3、CAN总线工作特点 4 can总线协议 5、CAN总线报文结构 6、总线配置

    Socket网络编程

    压缩包中有服务端与客户端的源代码,另外网络调试助手的安装包。在博客中有对应的博文。从零开发B/S机架应用程序(四)-TCP

    Visual C++通信编程工程实例精解 光盘

    书中精选了大量来自工程实践的应用实例,涵盖了串口通信、Socket网络通信、远程数据库访问、应用于工业上的OPC通信、Modem通信以及SMS和GPRS移动通信编程。 书中的每个应用实例都是在简单介绍必备的背景知识后,重点...

    C++ 百万并发网络通信引擎架构与实现 (Socket、全栈、跨平台).rar

    对C++编程和网络通信技术感兴趣的开发者和工程师,特别适合具有一定C++编程基础和网络通信理解的开发人员。无论是想要学习并发网络通信原理和实现技术的初学者,还是希望提升网络通信应用性能和稳定性的从业者,都能...

Global site tag (gtag.js) - Google Analytics