c++ socket学习(1.6)

本文学习相关资料:
C/C++ socket编程教程

环境:vs2015
源码:本文代码

这次来看看UDP
之前在c++ socket学习(1.2)讲过UDP怎么发送了,那现在来做一个可以一直发送的。

这次没有什么接收端和发送端了,毕竟谁发送谁就是发送端,谁接受就是接收端

先发送数据的叫发送端,先接收的叫接收端(使用bind函数的)

接收端

//前面省略了
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));while (1) {//udp接收信息,先收为敬int recvlen = recvfrom(servSock, buf, readlen, 0,(sockaddr*)&clntAddr, &nSize);if (strcmp(buf, "exit") == 0) {break;}std::cout << clntAddr.sin_port << " " << "收到的信息是:" << buf << std::endl;//将接收的数据处理一下,再发回去buf[recvlen / 2] = 0;sendto(servSock, buf, recvlen, 0, (sockaddr*)&clntAddr, nSize);
}

发送端

int nSize = sizeof(sockaddr);
while (1) {std::string sendMessage;std::cout << "输入要发送的内容(输入exit结束):";std::cin >> sendMessage;sendto(client, sendMessage.c_str(), sendMessage.size() + 1, 0, (sockaddr*)&servAddr, sizeof(sockaddr));if (sendMessage.compare("exit") == 0) {break;}recvfrom(client, buf, readlen, 0, (sockaddr*)&servAddr, &nSize);std::cout << "我收到了接收端的:" << buf << std::endl;
}

接收端要绑定了,才能收到发送端的信息

那么发送端没有绑定啊,是怎么接收到接收端处理过的信息呢?

原来发送端在调用sendto的时候,就需要一个IP地址端口,程序没有指明的话就由系统自己来分配了。

接收端可以通过recvfrom获得了发送端的IP地址端口,照着发回去就好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis学习笔记——(1)

1. NoSQL&Redis介绍 NoSQL&#xff0c;Not Only SQL&#xff0c;是非关系型的数据库。传统的关系数据库不能满足超大规模和高并发的应用。 是以Key-Value的形式存储&#xff0c;&#xff08;例如JSON,XML&#xff09;&#xff0c;不一定遵循传统数据库的一些基本要求&#…

命令模式坚决svn树冲突(local unversioned, incoming add upon update)

当工作目录修改删除过时更新使用svn更新就容易发生树冲突“Tree Confilict”.会出现类似提示。 local unversioned, incoming add upon update1local unversioned,incoming add upon update如果使用图形化客户端可以通过对比文件和解决冲突按钮进行解决&#xff0c; 如果是使用…

c++ vector学习

参考资料&#xff1a; cppreference.com 本文代码&#xff1a; 本文源码 目录隐式成员函数1.operator &#xff08;赋值给容器&#xff09;2.assign &#xff08;将值赋给容器&#xff09;元素访问3.at &#xff08;访问指定元素&#xff0c;进行下标检查&#xff09;4.operat…

linux关闭声音

对于CentOS/Redhat/RHEL/Fedora系统&#xff0c;使用root身份执行&#xff1a;echo "alias pcspkr off" >> /etc/modprobe.conf转载于:https://www.cnblogs.com/keethebest/p/3434821.html

Bundle Identifier

Bundle Identifier : 产品的唯一标识符 1.在模拟器上面&#xff0c;只能有一个唯一的标识符的应用程序 2.在AppStore上&#xff0c;所有的应用程序的Bundler ID都是唯一的 Bundle ID 公司的反向域名 产品名 Bundle ID 不支持中文&#xff0c;因此如果是上架产品&#xff0c;需…

c++ array学习

参考资料&#xff1a; cppreference.com 本文代码&#xff1a; 本文源码 array和vector的区别是array是和C中的数组类似&#xff0c;不能动态改变数组大小&#xff0c;所以会比vector少很多函数。 目录隐式定义的成员函数1.operator &#xff08;将另一个容器拷贝过来&#x…

lucene4入门(2)搜索

欢迎转载http://www.cnblogs.com/shizhongtao/p/3440479.html 接着上一篇&#xff0c;这里继续搜索&#xff0c;对于搜索和创建一样&#xff0c;首先你要确定搜索位置&#xff0c;然后用规定的类来读取。还要注意一点&#xff0c;确定分词器&#xff0c;因为不同的分词器所创建…

Topcoder SRM 648 (div.2)

第一次做TC全部通过&#xff0c;截图纪念一下。 终于蓝了一次&#xff0c;也是TC上第一次变成蓝名&#xff0c;下次就要做Div.1了&#xff0c;希望div1不要挂零。。。_(:зゝ∠)_ A. KitayutaMart2 万年不变的水题。 #include<cstdio> #include<cstring> #include&…

Kadane's algorithm学习

Kadane’s algorithm 简单来说就是用来计算数组中的连续子数组之和最大是多少 vector<int> vec; int temp 0,ans 0; for(int i0;i<vec.size();i){temp max(tempvec[i],vec[i]);ans max(temp,ans); } return ans;循环的第一行就是用来比较当前位置的值和前面数组…

好用的ajax后台框架

dwz 简单实用的国产jquery Ui框架 http://www.j-ui.com/#_blank转载于:https://www.cnblogs.com/userbibi/p/3441382.html

OpenFire源码学习之十九:在openfire中使用redis插件(上)

Redis插件 介绍 Redis是目前比较流行的NO-SQL&#xff0c;基于K,V的数据库系统。关于它的相关操作信息&#xff0c;本人这里就不做重复了&#xff0c;相关资料可以看这个网站http://www.redis.io/(官网)、http://www.redis.cn/(中文站)。 这里本人想说的是&#xff0c;拿Redis做…

c++ queue学习

参考资料&#xff1a; cppreference.com 本文代码&#xff1a; 本文源码 目录成员函数1.operator &#xff08;赋值给容器&#xff09;元素访问2.front &#xff08;访问第一个元素&#xff09;3.back &#xff08;访问最后一个元素&#xff09;容量4.empty &#xff08;判断容…

没有文件扩展“.js”的脚本引擎问题解决

安装MinGW的时候提示没有文件扩展“.js”的脚本引擎。原因&#xff1a;系统安装Dreamwear、UltraEdit、EditPlus后修改了.js文件的默认打开方式。当想直接执行js脚本时就会出现此错误。解决办法&#xff1a;打开注册表编辑器&#xff0c;定位[HKEY_CLASSES_ROOT.js]这一项&…

160 - 54 eKH

环境&#xff1a;windows xp 工具&#xff1a; 1、OllyDBG 2、IDA 3、exeinfo 查壳发现是程序无壳且用Delphi语言编写 可以通过搜索字符串的方式定位关键函数地址 这里定位到是 00427B44ReadInput(a2, &v17); // 读取输入的usernameif ( StrL…

点赚接口(第二版)

1.查看是否有新消息 url&#xff1a;/get/message/status?user_id{user_id} method&#xff1a;get response&#xff1a; {"code": "ok","msg": "","data": 0 //新消息数目 } 2.获取消息列表 url&#xff1a;/get/messa…

Java基础之线程——使用Runnable接口(JumbleNames)

控制台程序。 除了定义Thread新的子类外&#xff0c;还可以在类中实现Runnable接口。您会发现这比从Thread类派生子类更方便&#xff0c;因为在实现Runnable接口时可以从不是Thread的类派生子类&#xff0c;并且仍然表示线程。Java只允许有单个基类&#xff0c;如果类派生于Thr…

cpri带宽不足的解决方法_白皮书:FPGA赋能下一代通信和网络解决方案(第四部分)...

对PCIe Gen 5的支持除了以太网和存储控制器&#xff0c;Speedster7t FPGA上提供的对PCIe Gen 5的支持还能够与主机处理器紧密集成&#xff0c;以支持诸如sidecar智能网卡(SmartNIC)设计等高性能加速器应用。PCI Gen 5控制器使其能够读取和写入存储在FPGA内存层级结构中的数据&a…

laravel里面使用event

模式&#xff1a;大概是通过一个自定义的event&#xff0c;一个handler&#xff0c;还有一个binder&#xff0c;然后用来简化通知模型 生成自定义的event ./artisan make:event MyEvent 生成自定义的handler ./artisan handler:event MyEventHandler --eventMyEvent 然后在Even…

C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef

有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件&#xff0c;这当然可以通过变量设置&#xff0c;把所有可能用到的代码都写进去&#xff0c;在初始化时配置&#xff0c;但在不同的情况下可能只用到一部分代码&#xff0c;就没必…

山体等高线怎么看_每日一题 | 此处向斜山,你看出来了吗?

每日一题 | 此处向斜山&#xff0c;你看出来了吗&#xff1f;(2018江苏高考)如图为某区域地质简图。该区沉积地层有Q、P、C、D、S2、S1&#xff0c;其年代依次变老。读图回答1&#xff5e;2题。1&#xff0e;从甲地到乙地的地形地质剖面示意图是(  )2&#xff0e;为揭示深部地…