C++实现Socket连接通信
一、打开两个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连接通信相关推荐
- Socket的通信是基于连接的通信,通信结束时,Socket将不再有用,关闭时为了节约宝贵的系统资源
Socket的通信是基于连接的通信,通信结束时,Socket将不再有用,关闭时为了节约宝贵的系统资源. package p1;import java.io.DataInputStream; impor ...
- Http和Socket连接区别(ZT)
1.TCP连接 要想明白Socket连接,先要明白TCP连接.手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上 ...
- iOS端Socket连接、发送数据(一)
一.Socket的应用 IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室.礼物 (2)微信.QQ等即时聊天 (3)游戏对话.技能等 二.SOCKET原理 套接字(socket ...
- [转]php socket编程通信
FROM : http://blog.csdn.net/baixiaoshi/article/details/9399083 今天终于测试成功了php中的socket通信,先看原理图 这里可以清晰的看 ...
- Socket连接与HTTP连接
我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP.FTP.T ...
- Android中基于TCP协议的网络通信之使用Socket进行通信
TCP协议被称为一种端到端的协议.这是因为它为两台计算机的连接起到了重要作用:当一台计算机需要与另一台计算机进行接连时,TCP协议会他们之间建立一个连接:用于发送和接收数据的虚拟链路. TCP协议负责 ...
- Socket连接心跳包的机制总结
文章目录 Socket连接心跳包的机制总结 心跳包的由来 心跳包的作用 心跳包由服务端还是客户端发送? Socket连接心跳包的机制总结 心跳包的由来 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定 ...
- Http和Socket连接区别
http://hi.baidu.com/snowqxx/item/f598caf86fcff6ed1b111f45 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望 ...
- Java Socket编程----通信是这样炼成的
转载自 Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socke ...
最新文章
- 为什么华为200万招聘AI博士,马斯克却推出脑机接口对抗AI?
- 以为精通Java 线程池,看到这些误区,还是年轻了...
- JS题目总结:原型链/new/json/MVC/Promise
- PHP文件操作常用函数总结
- MFC消息详解 (WindowProc|OnCommand|OnNotify)
- 模式8--WorkerThread
- TomCat使用以及端口号被占用的处理方法
- 记录用户转成超级用户的文件名字_一分钟了解Linux用户
- python视频人脸检测_Python基于OpenCV实现视频的人脸检测
- UI设计实用素材|寻找一种新的方法来设计网站,单页网站
- 更改ubuntu的mysql版本为指定版本
- oracle vm win10,win10系统oraclevm卸载不了错误2503的解决方法
- [转载] 随机游走和随机重启游走_网络动画API的随机游走
- mybatis 存储过程 tmp_count_MyBatis框架介绍及实战操作
- linux查看命令源rpm,Linux rpm查询命令以及RPM包验证
- FFmpeg进阶:给视频添加文字水印
- 三层交换机内网访问外网
- 电源管理芯片TMI6201A,助力电池供电系统超长续航更有价值!
- R语言学习 文本处理
- what is grid ?
热门文章
- ubuntu下使用vscode开发golang程序,从控制台到简单web程序
- 网络版计算机化系统3q认证,实验室分析仪器3Q确认服务|分析仪器3Q认证服务|计算机系统认证确认服务...
- xampp 64位 php5.2,XAMPP 64位
- 如何调整Thinkpad x230的mini DP输出分辨率?
- 联想小新 Pad Pro 12.6评测
- Vue+Element UI完成新建调查问卷
- 使用计算机能佩戴老花镜,近视镜?远视镜?还是老花镜?——揭秘渐变多焦点眼镜的奥秘...
- WebGoat安装及使用说明
- IDEA开发 工具IC和IU的区别
- 《iPad开发从入门到精通》——6.4节收藏历史