作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

参考

IPv6 (getaddrinfo & inet_ntop)
mingw中的socket基础
windows下linux下socket编程区别
【坑】winsock2.h和windows.h的include顺序

Please include winsock2.h before windows.h

自己的源文件使用了winsock2.h,而Qt的头文件里包含了windows.h,所以把自己的头文件放到最前面即可。

使用

服务端,

#if defined (WIN32)SOCKET sockfd;
#elif defined(__linux__)int sockfd;
#endifstruct addrinfo hints, *servinfo, *p;struct sockaddr_in sockaddr;unsigned int len;int yes = 1;int rv;char PORT[6];sprintf(PORT, "%d", server->port_number);memset(&hints, 0, sizeof hints);hints.ai_family = AF_UNSPEC;hints.ai_socktype = SOCK_STREAM;hints.ai_flags = AI_PASSIVE; // use my IPif ((rv = getaddrinfo(NULL, PORT, &hints, &servinfo)) != 0) {#if defined (WIN32)fprintf(stderr, "getaddrinfo: WSAGetLastError=%d\n",  WSAGetLastError());
#elif defined(__linux__)fprintf(stderr, "getaddrinfo: gai_strerror=%s\n", gai_strerror(rv));
#endifreturn 1;}// loop through all the results and bind to the first we canfor (p = servinfo; p != NULL; p = p->ai_next) {if ((sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol))== -1) {perror("server: socket");continue;}if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int))== -1) {perror("setsockopt");exit(1);}if (bind(sockfd, p->ai_addr, p->ai_addrlen) == -1) {#if defined (WIN32)closesocket(sockfd);
#elif defined(__linux__)close(sockfd);
#endifperror("server: bind");continue;}len = sizeof(sockaddr);if (getsockname(sockfd, (struct sockaddr *) &sockaddr, &len) != 0) {#if defined (WIN32)closesocket(sockfd);
#elif defined(__linux__)close(sockfd);
#endifperror("server: getsockname");continue;}server->port_number = ntohs( sockaddr.sin_port );break;}if (p == NULL) {fprintf(stderr, "server: failed to bind\n");return 2;}freeaddrinfo(servinfo); // all done with this structureif (listen(sockfd, 5) == -1) {perror("listen");exit(1);}if (server->debug_level)printf("server: waiting for connections...\n");#if defined (NET_USE_PTHERAD)server->fd = sockfd;server->run = 1;int ret;pthread_t tid;ret = pthread_create(&tid, NULL, accept_cb, server);if(ret != 0){printf("%s failed\n", __FUNCTION__);return ret;}
#elif defined (NET_USE_LIBEV)ev_io_init(&server->listen_watcher, accept_cb, sockfd, EV_READ);server->listen_watcher.data = server;ev_io_start(server->loop, &server->listen_watcher);
#endifreturn 0;

mingw socket编程相关推荐

  1. Socket编程Http下载的简单实现

    Socket编程Http下载的简单实现 - Mr.DejaVu - 博客园 <C/C++> Socket编程Http下载的简单实现 下载原理: 网上介绍很多,就是按照Http协议,使用So ...

  2. Windows Socket编程笔记之最简单的小Demo

    Windows Socket编程的大致过程: 服务器端: ----过程-------------对应的API-------  0.初始化         |  WSAStartup()  1.创建So ...

  3. Linux下Socket编程

    Linux下Socket编程    网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的S ...

  4. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...

  5. C# Socket编程(5)使用TCP Socket

    TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer) ...

  6. 【.Net MF网络开发板研究-04】Socket编程之服务端

    前几篇文章介绍了Http相关的应用,其实从技术角度而言,应该先介绍Socket编程,然后再介绍Http,毕竟Http是用Socket相关函数编程实现的. .NET Micro Framework的So ...

  7. socket编程缓冲区大小对send()的影响

    1. 概述 Socket编程中,使用send()传送数据时,返回结果受到以下几个因素的影响: • Blocking模式或non-blocking模式 • 发送缓冲区的大小 • 接收窗口大小 本文档介绍 ...

  8. 华中科技大学计算机通信与网络实验,华中科技大学计算机通信与网络实验报告Socket编程实验.docx...

    实验一 Socket编程实验 1.1环境 开发环境:Windows 10 64 位,Intel Core i5-7300HQ CPU, 8GB 内存 1.1. 1开发平台 Microsoft Visu ...

  9. socket recv 服务端阻塞 python_网络编程(基于socket编程)

    网络编程(基于socket编程) socket套接字:应用程序通常通过socket"套接字"向网络发送请求或应答网络请求,是主机间或同一计算机中的进程间相互通讯 socket是介于 ...

  10. python的socket编程_Python Socket编程详细介绍

    在使用Python做socket编程时,由于需要使用阻塞(默认)的方式来读取数据流,此时对于数据的结束每次都需要自己处理,太麻烦.并且网上也没找到太好的封装,所以就自己写了个简单的封装. 封装思路 1 ...

最新文章

  1. 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?
  2. .NET Core 2.0 Preview 2为开发人员带来改进
  3. 总体参数的估计(概念)
  4. Android Studio开发基础之细节问题笔记
  5. 面向对象三大特性: 封装
  6. python截取指定字符串_python 正则匹配获取指定多个词的在字符串(句子/段落)索引位置...
  7. swift学习笔记之一——初见swift
  8. Markdown Cookbook by Eric
  9. R与Python或协同助力机器学习:听Azure ML Studio讲座有感
  10. maven 强制jdk的版本
  11. 男人想要成功--必须明白的22个道理
  12. 小米wifi linux 客户端下载,小米无线wifi安装_小米无线wifi客户端下载[最新版]-下载之家...
  13. a标签下载文档 a下载文档失败问题 跨域调用
  14. 现代检测技术-测量误差和处理
  15. 在国产系统(Linux)上,安装运行Steam游戏详解
  16. SAS逻辑回归之多分类
  17. 在线制作SprinBoot的banner
  18. MySQL燕十八老师课程笔记:第十六课:MySQL各个函数
  19. 认证抖音蓝V认证有什么好处?开通抖音企业号蓝V认证有什么权益优势?
  20. 酷狗音乐车载Android版,酷狗音乐车载版

热门文章

  1. android qq毛玻璃,如何快速做出毛玻璃背景?有了这个网格渐变神器,1分钟搞定...
  2. 轴承后缀ce和ca_轴承cc和ca与cde4有什么区别
  3. pdf文件转图片的两种方法
  4. php imagemagick psd,Centos下ImageMagick处理CR2, ARW, EPS, PSD, TIFF,AI等其他RAW格式图片的使用方法...
  5. 基于ASP的高校宿舍管理系统设计与实现
  6. 国庆促销海报模板素材
  7. pc用c语言控制三菱plc,上位PC机控制三菱PLC
  8. 【资源分享】一款bootstrap开发的后台管理系统前端模板
  9. CMMI体系建设的目的和意义
  10. IPython与IPython Notebook安装及使用