当前位置: 首页 > news >正文

常州网站开发2023年的新闻十条

常州网站开发,2023年的新闻十条,化妆品营销型网站模板,wordpress站点地址最近要做一个东西,关于一个软件上得到的信号,如何通过连接的局域网,将数据传输出去。我没做过相关的东西,但是我想应该和软件连接数据库的过程大致是差不多的,就一个ip和一个端口号啥的。 一.问题思路 多个设备同时连…

最近要做一个东西,关于一个软件上得到的信号,如何通过连接的局域网,将数据传输出去。我没做过相关的东西,但是我想应该和软件连接数据库的过程大致是差不多的,就一个ip和一个端口号啥的。

一.问题思路

多个设备同时连接同一个局域网,在一个电脑上发送一个数据,在别的电脑上可以实时接收这个数据。在找工作面试的时候,提前背了相关TCP、UDP的特性,由于TCP是面向连接的,虽然传输数据是可靠的,但是速率是比UDP慢的。因此,我想了想使用UDP传输是比较合适的,这个地方要用到Socket编程。当时面试只是背了背什么C++版本的Socket编程,其大致和java之中的Socket类似,但是还没有用过,趁着这个机会学一下。

二.ip设置与端口的设置

首先,查看本机ip。

按下windows键 + r ,打开运行,输入cmd。

在运行框里输入ipconfig(都是基本操作),查看ip地址。

可以看到我的接收端的ip地址是192.168.1.144.

我现在自己的电脑上进行试一下。

接收端代码:

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")int main() {// 初始化WinsockWSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {std::cout << "初始化套接字" << std::endl;return -1;}// 创建套接字SOCKET receiverSocket = socket(AF_INET, SOCK_DGRAM, 0);if (receiverSocket == INVALID_SOCKET) {std::cout << "创建套接字失败" << std::endl;WSACleanup();return -1;}// 绑定监听地址sockaddr_in receiverAddress;receiverAddress.sin_family = AF_INET;receiverAddress.sin_port = htons(1234);  // 设置监听端口号receiverAddress.sin_addr.s_addr = INADDR_ANY;if (bind(receiverSocket, (sockaddr*)&receiverAddress, sizeof(receiverAddress)) == SOCKET_ERROR) {std::cout << "绑定套接字失败" << std::endl;closesocket(receiverSocket);WSACleanup();return -1;}// 接收数据char buffer[1024];sockaddr_in senderAddress;int senderAddressSize = sizeof(senderAddress);int receivedBytes = recvfrom(receiverSocket, buffer, sizeof(buffer), 0, (sockaddr*)&senderAddress, &senderAddressSize);if (receivedBytes == SOCKET_ERROR) {std::cout << "接收数据失败" << std::endl;}else {buffer[receivedBytes] = '\0';std::cout << "接收到的数据: " << buffer << std::endl;}// 清理资源closesocket(receiverSocket);WSACleanup();getchar();return 0;
}

发送端代码:

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")int main() {// 初始化WinsockWSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {std::cout << "初始化Socket失败" << std::endl;return -1;}// 创建套接字SOCKET senderSocket = socket(AF_INET, SOCK_DGRAM, 0);if (senderSocket == INVALID_SOCKET) {std::cout << "创建Socket失败" << std::endl;WSACleanup();return -1;}// 设置接收方地址sockaddr_in receiverAddress;receiverAddress.sin_family = AF_INET;receiverAddress.sin_port = htons(1234);  // 设置接收方的监听端口号receiverAddress.sin_addr.s_addr = inet_addr("192.168.1.144");// 发送数据const char* message = "你好呀!小杨同学";if (sendto(senderSocket, message, strlen(message), 0, (sockaddr*)&receiverAddress, sizeof(receiverAddress)) == SOCKET_ERROR) {std::cout << "发送数据失败" << std::endl;}else {std::cout << "成功发送数据" << std::endl;}// 清理资源closesocket(senderSocket);WSACleanup();return 0;
}

最终的结果,可以看到两台电脑正常通信:

三.问题的出现

一台机器上进行通信是完全没有问题的,但是当两台机器进行通信的时候,其中一台给另外一台发送消息,是正常的,但是当反过来的时候发现通信不了。

我的防火墙已经关闭了,应该没啥问题哈,直接ping一下看看

但是ping了一下发现可以ping通呀。

四.问题的解决

解决方案一:防火墙关闭---端口

接下来去看一下相应的端口状态:使用windows + r,打开任务管理器 -> 性能

性能 -> 打开资源监视器

查看端口的权限情况

可以发现我的监听端口一栏之中,UDP完全是不允许的。

那就继续深究一下端口的问题,发现前面的那个防火墙状态只是用来防病毒的,并不是用来监视端口的。首先打开控制面板

启用或者关闭防火墙

关闭防火墙

发现还是不可以。

查看端口信息,可以看到1235端口并没有指定IPv4。

那么我们需要给1235端口号指定一个IPv4的地址。

这个地方我就直接将端口号改为了本机端口:

发现偶尔可以接收到消息,有的时候还是接收不到消息。

解决方案二:多次传输

想一下UDP的传输协议,这是不可靠的传输协议,因此,重新修改代码,发现与上面那个地址是否绑定无关。

接收端:我将信号变为一直接收的状态

while (1){// 接收数据char buffer[1024];sockaddr_in senderAddress;int senderAddressSize = sizeof(senderAddress);int receivedBytes = recvfrom(receiverSocket, buffer, sizeof(buffer), 0, (sockaddr*)&senderAddress, &senderAddressSize);if (receivedBytes == SOCKET_ERROR) {std::cout << "接收数据失败" << std::endl;}else {buffer[receivedBytes] = '\0';std::cout << "接收到的数据: " << buffer << std::endl;}}

发送端:将信号发送10次。

// 发送数据const char* message = "你好呀!小杨同学";for (int i = 0; i < 10; i++){if (sendto(senderSocket, message, strlen(message), 0, (sockaddr*)&receiverAddress, sizeof(receiverAddress)) == SOCKET_ERROR) {std::cout << "发送数据失败" << std::endl;}else {std::cout << "成功发送数据" << std::endl;}}

结果:发送了10次数据,只接收到了八个数据。

通过上述数据说明,在进行使用的过程之中,既然寻求速度选择了UDP发送数据,第一个注意点是需要将防火墙进行关闭。第二个注意点是注意数据的丢失情况,只进行发送一次可能出现发送不成功的问题。

补充解决方案三:方案一的替代版

一般而言,电脑上的防火墙是不允许关闭的,因此,有没有什么更好的方案去替代方案一。

将防火墙进行打开, 防火墙 -> 高级设置

入站规则 -> 新建规则

端口

只允许连接

随便起个名字

可以看到也是正常使用的。

五.界面设计

(1)发送端

其中,三个输入框之中的变量绑定分别为

CIPAddressCtrl m_ip; // ip
CEdit m_port;        // 端口号
CEdit m_edit;        // 发送数据

将中间的最大的发送数据的编辑框设置属性

需要注意在相应的属性设置栏之中,不使用预编译头文件,否则会与C6990错误产生冲突。

发送端代码进行测试:

可以发现是能够进行正常的使用的。

(2)接收端

接收端的代码就不详细解释了,详细的资源可以在博客之中进行下载。

最终的测试界面是正确的。

代码下载地址:

https://download.csdn.net/download/m0_47489229/88671248icon-default.png?t=N7T8https://download.csdn.net/download/m0_47489229/88671248

http://www.ritt.cn/news/29096.html

相关文章:

  • 天津泰达建设集团有限公司网站长沙做引流推广的公司
  • 新手建网站什么类型好阿里巴巴国际站官网
  • 网站建设制作pdf微信小程序怎么制作自己的程序
  • 中级网站开发工程师 试题怎么免费注册域名
  • 河源市新闻最新消息seo优化代理
  • wordpress dux5.3鼓楼网页seo搜索引擎优化
  • 网站建设带主机安徽seo优化
  • 全国公安机关网站备案关键词推广技巧
  • 做软件的中介网站百度知道提问
  • 做系统网站建设无锡百姓网推广
  • 郑州新闻头条最新消息搜索引擎优化的五个方面
  • 用固定ip做访问网站服务器外贸google推广
  • 信息产业部网站备案系统百度搜索热词排行榜
  • 网站网页设计设计方案网络营销的含义特点
  • 主流建站开源程序有哪些苏州网站关键词优化推广
  • 深圳城乡和住房建设局网站首页如何做好线上推广和引流
  • 做网站自适应框架百度seo关键词排名优化工具
  • 潍坊哪里有做360网站的seo是哪个英文的简写
  • 中国建设银行门户网站南宁整合推广公司
  • 网络工程师免费教程宁波seo外包
  • 企业信息系统的架构seo如何提高排名
  • 做网站跟做app哪个累石家庄seo关键词
  • 企业网站开发公司排名引擎搜索优化
  • 如何写代码做网站6seo公司后付费
  • wordpress小工具 样式广州百度搜索排名优化
  • 邵阳网站建设上海seo博客
  • 长春做网站外包久久seo正规吗
  • 专注网站开发三亚百度推广地址
  • 网站开发的工作内容seo还有未来吗
  • 做网站用到的java技术搜索引擎优化的定义