Windows 网络编程
Rui_Freely
心之所向,必能达成
展开
-
Socket 基础Api 介绍(TCP篇)(图表)
原创 2019-03-10 15:26:17 · 200 阅读 · 0 评论 -
C++11中的原子操作(atomic operation)
所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。第一:创建四个线程,直接运行代码#include <iostream>#...原创 2019-04-09 12:02:43 · 584 阅读 · 0 评论 -
C++11 mutex方便的自解锁lock_guard
std::lock_guar这东西是干什么的呢?它是与mutex配合使用,把锁放到lock_guard中时,mutex自动上锁,lock_guard析构时,同时把mutex解锁。把先看一段简单代码。#include <thread>#include <mutex>int g_i = 0;std::mutex g_i_mutex; // protects...原创 2019-04-09 10:27:25 · 763 阅读 · 0 评论 -
Size_t和int区别
(1)size_t和intsize_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。在32位架构中被普遍定义为:typedef unsigned int size_t; typedef int ptrdiff_t; typedef int ...原创 2019-04-02 09:41:43 · 192 阅读 · 0 评论 -
memmove 和 memcpy处理内存重叠问题以及两个内存之间完美拷贝(经典实例)
1.区别:memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count);他们的作用是一样的,...原创 2019-03-28 10:49:44 · 1260 阅读 · 0 评论 -
0x00C36DF6 (sdckern.dll)处(位于 EasyTcpClient.exe 中)引发的异常: 0xC0000005: 读取位置 0xFEFEFEFE 时发生访问冲突。
0x00C36DF6 (sdckern.dll)处(位于 EasyTcpClient.exe 中)引发的异常: 0xC0000005: 读取位置 0xFEFEFEFE 时发生访问冲突。如有适用于此异常的处理程序,该程序便可安全地继续运行。while (true) { char *cmdBuf_p = new char[256]; scanf_s("%s", cmdBuf_p);...原创 2019-03-24 15:06:47 · 4229 阅读 · 0 评论 -
VS2015环境利用Select模型实现非堵塞情况下TCP通信
关于Select模型是什么东东,小弟专门一篇博客有详细介绍。这篇文章直接上代码啦。EasyTcpClientMessageHeader.h//定义数据结构enum CMD{ CMD_LOGIN, CMD_LOGIN_RESULT, CMD_LOGOUT, CMD_LOGOUT_RESULT, CMD_NEW_USER_JOIN, CMD_ERROR};str...原创 2019-03-26 17:20:10 · 587 阅读 · 0 评论 -
“struct”类型重定义,"enum"类型重定义
MessageHeader.hpp这个头文件封装的是struct和enum类型的数据。因为在另一个头文件中#include"MessageHeader.hpp",在源文件中又#include"MessageHeader.hpp",所以出现重定义的情况。解决办法:在源文件中删除该#include"MessageHeader.hpp",就可以了。...原创 2019-03-26 14:02:49 · 3594 阅读 · 0 评论 -
size_t 与 int 区别
(1)size_t和intsize_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。在32位架构中被普遍定义为: typedef unsigned int size_t; typedef int ptrdiff_t; typedef int ...原创 2019-03-22 14:06:05 · 175 阅读 · 0 评论 -
c++中vector的用法详解
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include<vector>(2)创建vector对象,vector<int> vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。(...转载 2019-03-21 14:47:26 · 1588 阅读 · 0 评论 -
Windows 中Select网络模型
一、select函数1. 用途在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使用select函数就可以实现非阻塞编程。select函数是一个轮循函数,循环询问文件节点,可设置超时时间,超时时间...原创 2019-03-21 14:14:37 · 625 阅读 · 1 评论 -
'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disa
VS2015报上面错误,解决办法如下:问题出现的原因:在VS2013以后的版本中,增加了inet_pton()、InetPton()之类的新函数,用于IP地址在“点分十进制”和“二进制整数”之间转换,并且能够处理ipv4和ipv6。而inet_addr是老函数,高版本VS在编译时默认使用了新函数,所以会报该错误。net_pton()原型:net_pton:将“点分十进制” -&g...原创 2019-03-12 14:58:06 · 8875 阅读 · 2 评论 -
ISO七层模型
物理层: O S I 模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C 上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。 用户要传递信息就要利用一些物理媒体,如双绞线、同轴...原创 2019-03-12 14:26:57 · 24347 阅读 · 0 评论 -
vector不是模板 list不是模板
解决方法很简单,也很出乎意料使用vector和list只是简单地#include<vector>#include<list>是不够的vector和list在命名空间std里,还需要添加声明using namespace std; ...转载 2019-03-20 18:50:53 · 2973 阅读 · 0 评论 -
Windows socket通信(一个简单的客户端和服务器的收发)
服务器代码:#define WIN32_LEAN_AND_MEAN#define _WINSOCK_DEPRECATED_NO_WARNINGS#include<windows.h>#include<WinSock2.h>#include<stdio.h>#pragma comment(lib,"ws2_32.lib")enum C...原创 2019-03-20 14:18:44 · 869 阅读 · 0 评论 -
sockaddr和sockaddr_in的异同
sockaddr结构体struct sockaddr { unsigned short sa_family; // 地址族, AF_xxx char sa_data[14]; //14字节的协议地址};上面是通用的socket地址sockaddr_in的结构体struct sockaddr_in {short int sin_family; //地址...转载 2019-03-11 16:58:41 · 458 阅读 · 0 评论 -
网络编程(VS2015)WSACleanup
WSACleanup 清理,成功返回0,可用WSAGetLastError来获取错误码。在多线程环境中,调用此函数将终止所有线程的套接字。int WSACleanup(void);Return valueThe return value is zero if the operation was successful. Otherwise, the value SOCKET_ERROR...原创 2019-03-20 09:13:55 · 499 阅读 · 0 评论 -
无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _main 中被引用
今天做windows socket开发的时候发现无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _main 中被引用,最后查到两种解决办法,先把错误图片附上。解决办法1.在main()函数前面加上 #pragma comment(lib,"ws2_32.lib"),就可以正常编译了。解决办法2.在工程属性的附加依赖项中添加ws2_32.lib。具体步骤是:项目...原创 2019-03-10 17:45:01 · 9994 阅读 · 0 评论 -
c++11 chrono全面解析(高精度时钟,可达纳秒级别)
1.精度:时钟节拍(时间精度):template <intmax_t N, intmax_t D = 1> class ratio;其中N表示分子,D表示分母,默认用秒表示的时间单位。N对应于其成员num,D对应于其成员den常用的单位:ratio<60, 1>minuteratio<1, 1>...原创 2019-04-03 13:58:54 · 8058 阅读 · 0 评论