首先是UDP和TCP的区别:

  UDP是不连接服务器,每次发送数据的时候需要服务器的IP;而TCP是先连接服务器,保持常连接,然后直接发送不需要IP。

下面是TCP客户端:

1、新建项目,TestCSocket。

2、新建一个CSocket的派生类,CSockSon:CSocket。是因为只有CSocket的的虚函数OnReceive才可以在客户端上接收数据,而一个纯CSocket对象的OnReceive是空的,

  所以后面要重写此函数来处理接收数据。

3、获得CSockSon的对象。

  在Dlg.h中定义一个CSockSon对象:public:CSockSon m_sock;

  首先需要在AppInit中初始化SOCKEt:AfxSocketInit();(为什么要初始化可以看Winapi,无非就是打包底层api函数);

  在连接按钮函数里:m_sock.Create();(这里可以不加参数,因为是TCP,所有参数在Connect里加入);

             m_socku.Connect(CString("192.168.43.74"),8080);(然后连接到服务器IP,没写的参数都是缺省值,代表TCP)

  此时已经创建了一个连接到服务器的套接字对象。

4、发送数据到服务器。

  m_sock.Send("123","123".GetLenth(),...);(反正TCP就是使用这个函数来发送数据,而UDP是使用SendTo,SendTo里制定了Ip)

5、接收数据。

  首先在Dlg.cpp中增加一个方法,用于将从OnReceive中接收到的数据打印出来。

  void TestCSocket::OnReceive(LPCTSTR text)//注意两个OnReceive是不一样的,这个是自定义的,text是socket对象的OnReceive方法回调信息,代表接收数据

  {

  MessageBox(text);

  }

  接下来,需要在回调函数中将获取的数据传到上面那个函数里。在第二步中的派生类的CSockSon.cpp中重写虚函数OnReceive():

    void CSockU::OnReceive(int nErrorCode)
      {
      CString sziP;//用来存发来IP
      UINT nPort;//端口
      char s[512];//数据
      int rLen=ReceiveFrom(s,sizeof(s),sziP,nPort);//返回值,成功就返回接收长度
      s[rLen]=0;//是为了不出现乱码
      CTestCSocketDlg *pDlg= (CTestCSocketDlg*)AfxGetMainWnd();//获得主窗口的句柄,需要加入主窗口的头文件#include "TestCSocketDlg.h"
      pDlg->OnReceive(s);//调用自定义函数,把s传过去
      CSocket::OnReceive(nErrorCode);
      }

  注意:CWnd* AfxGetMainWnd( );

     使用AfxGetMainWnd函数获取MFC程序中的主框架类指针是一个常用作法。

就是获得应用程序主窗口的指针,AfxGetMainWnd()-> m_hWnd是主窗口的句柄

6、判断一个CSocket是否Create成功:m_socket.m_hSocket == INVALID_SOCKET

  

CSocket客户端(TCP)的更多相关文章

  1. (转)公有云vr客户端tcp连接数太多造成 系统卡顿问题 [bittorrent tracker优化] -公有云常见网络问题及思路

    在公有云服务器 发现使用tcp(http)的tracker连接数太多 用户太多会造成windows系统卡顿 特此发表一下修改配置和路由器的方法 解决卡顿问题 解决方法1(参考内容): 修改 /etc/ ...

  2. 服务器端与客户端TCP连接入门(一)

    Java中使用Socket(即套接字)完成TCP程序的开发 服务器端使用ServerSocket接收客户端的连接请求,每一个客户端都使用一个Socket对象表示 在服务器端每次运行时都要使用accep ...

  3. c--socket通信TCP篇

    https://www.cnblogs.com/ashen/p/4474360.html #include <sys/socket.h> 2 #include <stdlib.h&g ...

  4. Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源

    时隔半年,对网络调试助手工具进行所有代码重写,这次目录结果整齐的一逼,代码整齐的一逼,非常完善了,打死也不再改版了.这次真的打死也不再改版了.旧版本1:http://www.qtcn.org/bbs/ ...

  5. socket | tcp客户端 tcp服务器 udp客户端 udp 服务器 创建方法

    tcp服务器 #coding=utf-8 ''' 这里是tcp服务器端,要先启动 ''' import socket import threading bind_ip = "0.0.0.0& ...

  6. 服务器端与客户端TCP连接入门(三:多线程)

    对于服务器端来说,如果要加入多线程机制,则应该在每个用户连接之后启动一个新的线程 建立一个EchoThread类,此类专门用于处理多线程操作,此时的多线程使用Runnable接口实现 package ...

  7. 服务器端与客户端TCP连接入门(二)

    1.服务器端程序 package Socket; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...

  8. node.js中net模块创建服务器和客户端(TCP)

    node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...

  9. linux 服务器/客户端 tcp通信的简单例子

    昨天弄了sublime之后没有弄输入中文的了,学生党来着,刚好可以练练英语(英语渣渣,还要考六级),所以注释都写英文的(语法什么的就别太深究了) 服务器端: /*start from the very ...

随机推荐

  1. paper 1:图像特征提取

    特征提取是计算机视觉和图像处理中的一个概念.它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点.连续的曲线或者连 ...

  2. 20道C#练习题(一)1——10题

    1.输入三个整数,xyz,最终以从小到大的方式输出.利用if嵌套. Console.Write("请输入x="); double x = double.Parse(Console. ...

  3. 安装 Apache 出现 <OS 10013> 以一种访问权限不允许的方式做了一个访问套接字的尝试

    在安装Apache的过程中出现: 仔细查看提示: make_sock: could not bind to address 0.0.0.0:80 恍然大悟,计算机上安装了IIS7,80端口已占用. 打 ...

  4. zw版【转发·台湾nvp系列Delphi例程】HALCON FillUpShape2

    zw版[转发·台湾nvp系列Delphi例程]HALCON FillUpShape2 procedure TForm1.Button1Click(Sender: TObject);var op : H ...

  5. 关于MyEcplise中常见的问题和解决方案

    1.问题:严重   The web application  created a ThreadLocal with key of type  and a value of type  but fail ...

  6. 解决tomcat占用8080端口问题图文教程

    在dos下,输入  netstat   -ano|findstr  8080 //说明:查看占用8080端口的进程 显示占用端口的进程 taskkill  /pid  6856  /f //说明,运行 ...

  7. hadoop概述测试题和基础模版代码

    hadoop概述测试题和基础模版代码 1.Hadoop的创始人是DougCutting?() A.正确 B.错误答对了!正确答案:A解析:参考课程里的文档,这个就不解释了2.下列有关Hadoop的说法 ...

  8. Linux之awk命令详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  9. 28、Oracle(四)用户权限控制

    一)用户Oracle中的用户分为二大类1)Oracle数据库服务器创建时,由系统自动创建的用户,叫系统用户,如sys.2)利用系统用户创建的用户,叫普通用户,如scott,hr,c##tiger,zh ...

  10. ectouch第七讲 之ECshop模板机制整理

    网上的资源感觉还是有些用,可以看看,帮助理解,ECshop模板机制整理原文:http://blog.sina.com.cn/s/blog_6900af430100nkn8.html 一.模板引擎: E ...