一、打开两个VS2019,创建两个控制台程序分别命名为client和servers

二、编写服务端servers

1、包含头文件及库文件

#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#pragma warning(disable:4996)

2、初始化及反初始化代码,记下来就行,永远不变

//初始化代码,死记下来就行WORD wVersion = MAKEWORD(2, 2);WSADATA wsadata;if (WSAStartup(wVersion, &wsadata) != 0){return 0;}//反初始化操作WSACleanup();

3、创建socket

SOCKET s= socket(AF_INET, SOCK_STREAM, 0);//第一个参数协议簇(AF_INET,ipv4;AF_INET6,ipv6;AF_UNIX,本机通信)//第二个参数类型(SOCK_STREAM,TCP流;SOCK_DGRAM,UDP数据报;SOCK_RAW,原始套接字)//第三个参数一般设置0,当确定套接字使用的协议簇和类型时,这个参数的值就为0      if (s==INVALID_SOCKET){return 0;//创建套接字失败}

4、绑定端口并开启监听

sockaddr_in add;int len = sizeof(sockaddr_in);add.sin_family = AF_INET;//协议簇add.sin_addr.S_un.S_addr = inet_addr("0.0.0.0");//表示接受任意ip地址add.sin_port = htons(11111);//网络字节序是大尾方式,本地字节序是小尾方式,需要转换int i = bind(s, (sockaddr*)&add, len);listen(s, 5);//瞬间来五个用户

5、等待客户端连接

sockaddr_in caddr;caddr.sin_family = AF_INET;int caddrlen = sizeof(sockaddr_in);SOCKET sclient=accept(s,(sockaddr*)&caddr, &caddrlen);//重新产生一个socket用来通信if (sclient==INVALID_SOCKET){return 0;}

6、发送数据并关闭连接

int ret = send(sclient, "哎呦", strlen("哎呦"), 0);closesocket(sclient);

三、编写客户端

1、包含头文件及库文件

#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#pragma warning(disable:4996)

2、初始化及反初始化代码,记下来就行,永远不变

//初始化代码,死记下来就行WORD wVersion = MAKEWORD(2, 2);WSADATA wsadata;if (WSAStartup(wVersion, &wsadata) != 0){return 0;}//反初始化操作WSACleanup();

3、创建socket

SOCKET s= socket(AF_INET, SOCK_STREAM, 0);//第一个参数协议簇(AF_INET,ipv4;AF_INET6,ipv6;AF_UNIX,本机通信)//第二个参数类型(SOCK_STREAM,TCP流;SOCK_DGRAM,UDP数据报;SOCK_RAW,原始套接字)//第三个参数一般设置0,当确定套接字使用的协议簇和类型时,这个参数的值就为0      if (s==INVALID_SOCKET){return 0;//创建套接字失败}
sockaddr_in add;int len = sizeof(sockaddr_in);add.sin_family = AF_INET;//协议簇add.sin_addr.S_un.S_addr = inet_addr("192.168.1.107");//主动连接该ip地址add.sin_port = htons(11111);//网络字节序是大尾方式,本地字节序是小尾方式,需要转换

4、连接服务器

int i = connect(s, (sockaddr*)&add, len);if (SOCKET_ERROR==i){return 0;}

5、接收服务器发送的数据并关闭连接

char sbuf[256] = { 0 };int ret = recv(s, sbuf, 256, 0);if (ret==0){return 0;//连接断开}else if(ret>0){printf(sbuf);}closesocket(s);

四、运行结果

五、小技巧

@err,hr 监视输入这个可以查看错误信息

欢迎关注公众号:编程有你

欢迎关注视频号:之乎者也吧

C++实现Socket连接通信相关推荐

  1. Socket的通信是基于连接的通信,通信结束时,Socket将不再有用,关闭时为了节约宝贵的系统资源

    Socket的通信是基于连接的通信,通信结束时,Socket将不再有用,关闭时为了节约宝贵的系统资源. package p1;import java.io.DataInputStream; impor ...

  2. Http和Socket连接区别(ZT)

    1.TCP连接 要想明白Socket连接,先要明白TCP连接.手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上 ...

  3. iOS端Socket连接、发送数据(一)

    一.Socket的应用 IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室.礼物 (2)微信.QQ等即时聊天 (3)游戏对话.技能等 二.SOCKET原理 套接字(socket ...

  4. [转]php socket编程通信

    FROM : http://blog.csdn.net/baixiaoshi/article/details/9399083 今天终于测试成功了php中的socket通信,先看原理图 这里可以清晰的看 ...

  5. Socket连接与HTTP连接

    我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP.FTP.T ...

  6. Android中基于TCP协议的网络通信之使用Socket进行通信

    TCP协议被称为一种端到端的协议.这是因为它为两台计算机的连接起到了重要作用:当一台计算机需要与另一台计算机进行接连时,TCP协议会他们之间建立一个连接:用于发送和接收数据的虚拟链路. TCP协议负责 ...

  7. Socket连接心跳包的机制总结

    文章目录 Socket连接心跳包的机制总结 心跳包的由来 心跳包的作用 心跳包由服务端还是客户端发送? Socket连接心跳包的机制总结 心跳包的由来 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定 ...

  8. Http和Socket连接区别

    http://hi.baidu.com/snowqxx/item/f598caf86fcff6ed1b111f45 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望 ...

  9. Java Socket编程----通信是这样炼成的

    转载自 Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socke ...

最新文章

  1. 为什么华为200万招聘AI博士,马斯克却推出脑机接口对抗AI?
  2. 以为精通Java 线程池,看到这些误区,还是年轻了...
  3. JS题目总结:原型链/new/json/MVC/Promise
  4. PHP文件操作常用函数总结
  5. MFC消息详解 (WindowProc|OnCommand|OnNotify)
  6. 模式8--WorkerThread
  7. TomCat使用以及端口号被占用的处理方法
  8. 记录用户转成超级用户的文件名字_一分钟了解Linux用户
  9. python视频人脸检测_Python基于OpenCV实现视频的人脸检测
  10. UI设计实用素材|寻找一种新的方法来设计网站,单页网站
  11. 更改ubuntu的mysql版本为指定版本
  12. oracle vm win10,win10系统oraclevm卸载不了错误2503的解决方法
  13. [转载] 随机游走和随机重启游走_网络动画API的随机游走
  14. mybatis 存储过程 tmp_count_MyBatis框架介绍及实战操作
  15. linux查看命令源rpm,Linux rpm查询命令以及RPM包验证
  16. FFmpeg进阶:给视频添加文字水印
  17. 三层交换机内网访问外网
  18. 电源管理芯片TMI6201A,助力电池供电系统超长续航更有价值!
  19. R语言学习 文本处理
  20. what is grid ?

热门文章

  1. ubuntu下使用vscode开发golang程序,从控制台到简单web程序
  2. 网络版计算机化系统3q认证,实验室分析仪器3Q确认服务|分析仪器3Q认证服务|计算机系统认证确认服务...
  3. xampp 64位 php5.2,XAMPP 64位
  4. 如何调整Thinkpad x230的mini DP输出分辨率?
  5. 联想小新 Pad Pro 12.6评测
  6. Vue+Element UI完成新建调查问卷
  7. 使用计算机能佩戴老花镜,近视镜?远视镜?还是老花镜?——揭秘渐变多焦点眼镜的奥秘...
  8. WebGoat安装及使用说明
  9. IDEA开发 工具IC和IU的区别
  10. 《iPad开发从入门到精通》——6.4节收藏历史