基于udp的socket网络编程

news2024/9/20 1:07:53

套接字

网络套接字

原始套接字

unix套接字

windows下SOCKET 为整数。

协议家族  套接字种类   协议

udpServer.cc

#pragma warning(disable:4996)
#include<iostream>
#include<string>
#include<cstdlib>
#include<WinSock2.h>

#pragma comment(lib,"ws2_32.lib")

using namespace std;

uint16_t serverport = 8080;
string serverip = "192.168.88.130";
int main()
{
	WSAData wsd;           //初始化信息
    //启动Winsock
    if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0) {/*进行WinSocket的初始化,
        windows 初始化socket网络库,申请2,2的版本,windows socket编程必须先初始化。*/
        cout << "WSAStartup Error = " << WSAGetLastError() << endl;
        return 0;
    }
    else {
        cout << "WSAStartup Success" << endl;
    }
    //创建套接字
    SOCKET csock = socket(AF_INET, SOCK_DGRAM, 0);
    if (csock == SOCKET_ERROR)
    {
        cout << "socket Error = " << WSAGetLastError() << endl;
        return 1;
    }
    else {
        cout << "socket Success" << endl;
    }
    //udp客户端不需要显示的绑定,但可以指定
    struct sockaddr_in server;
    server.sin_family = AF_INET;
    server.sin_port = htons(serverport);
    //将字符串转为点分十进制的ip
    server.sin_addr.s_addr = inet_addr(serverip.c_str());
#define NUM 1024
    char inbuffer[NUM];

    //将信息发出
    string line;
    while (true)
    {
        cout << "Please Enter# ";
        getline(cin, line);
        int n = sendto(csock, line.c_str(), line.size(), 0, (struct sockaddr*)&server, sizeof(server));
        if (n < 0)
        {
            cerr << "sendto error!!!" << endl;
            break;
        }
        struct sockaddr_in peer; 
        int peerlen = sizeof(peer);
        //收取数据
        inbuffer[0] = 0;
        n = recvfrom(csock, inbuffer, sizeof(inbuffer)-1,0, (struct sockaddr*)&peer, &peerlen);
    }
    closesocket(csock);
    WSACleanup();
	return 0;
}

【干货】Windows平台基于udp的socket网络编程开发_windows udp socket-CSDN博客

Linux和Windows跨平台通信

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

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

相关文章

若楠带你初识OpenCV(3)--图像平滑处理和图像形态学

文章目录 OpenCV图像平滑处理1. 添加噪声2. 均值滤波3. 方框滤波4. 高斯滤波5. 中值滤波 图像形态学1. 腐蚀2. 膨胀3. 开运算4. 闭运算5. 梯度运算6. 顶帽和黑帽顶帽黑帽 总结 OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视…

佰朔资本:北交所,突现惊人一幕!

进入9月份以来&#xff0c;北交一切7只股票产生了大宗生意。大宗生意并不乖僻&#xff0c;让人吃惊的是这些股票的生意折价起伏很大。北交所的蓝筹股贝特瑞折价逾越30%&#xff0c;连城数控亦逾越26%&#xff0c;并且这些股票较其高位本就现已跌幅巨大。 那么&#xff0c;终究…

新型PyPI攻击技术可能导致超2.2万软件包被劫持

一种针对 Python 软件包索引&#xff08;PyPI&#xff09;注册表的新型供应链攻击技术已在野外被利用&#xff0c;并且目前正试图渗透到下游组织中。 软件供应链安全公司 JFrog 将其代号定为Revival Hijack&#xff0c;并称这种攻击方法可用于劫持 2.2万个现有 PyPI 软件包&am…

JavaScript - Api学习 Day03 (日期对象、节点操作、两种定时器、本地存储)

文章目录 一、日期对象1.1 实例化1.2 日期对象方法 二、节点操作2.1 父子兄弟节点1. 父节点查找2. 子节点查找3. 兄弟关系查找 2.2 增删节点1. 创建节点 - createElement2. 添加节点2.1 appendChild() 方法2.2 insertBefore() 方法2.3. 克隆节点 - cloneNode 3. 删除节点3.1 re…

开放式运动耳机评测怎么样?真人实测总结分享

其实对于很多人来说&#xff0c;为了保持身体的健康&#xff0c;还是蛮喜欢适当运动的。不过&#xff0c;跑步有时候还是有点枯燥的&#xff0c;所以能提升运动兴趣的装备必须提前安排。除了舒服的衣服&#xff0c;耳机也是必不可少的&#xff0c;跟着节奏踩点跑步也很容易分泌…

【数据库】MySQL-基础篇-SQL

专栏文章索引&#xff1a;数据库 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、SQL通用语法 二、SQL分类 三、DDL 1.数据库操作 1.1 查询所有数据库 1.2 查询当前数据库 1.3 创建数据库 1&#xff09;案例&#xff1a; 1.4 删除数据库 1.5 切换数据库…

Hadoop运行jps没有datanode节点【已解决】

1 原因&#xff1a; 格式化NameNode后&#xff0c;如果DataNode的clusterID与新的NameNode的clusterID不匹配&#xff0c;DataNode将无法加入集群&#xff0c;导致HDFS无法正常提供服务。 2 解决方式&#xff1a; 将新的NameNode的clusterID与DataNode的clusterID保持一致 &…

C#使用MQTT(二):MQTT客户端

上一篇我们初步设计了MQTT服务端 C#使用MQTT(一):MQTT服务端-CSDN博客 这里我们设计客户端MQTT Client,接上一篇 新建Windows窗体FormMqttClient 窗体FormMqttClient设计如图&#xff1a; 窗体FormMqttClient设计器相关代码如下 文件FormMqttClient.Designer.cs namespace…

【软件测试】软件测试-----什么是Bug?Bug是如何分级的?Bug的生命周期是怎样的?如何描述一个Bug?

博客目录 一.软件测试的生命周期二.BUG的定义和级别2.1 bug的概念.2.2 如何描述一个bug.2.3bug的级别2.3.1 bug分级的意义.2.3.2 bug的四种级别. 三.BUG的生命周期.四.当与开发人员发生冲突该如何处理(高频面试)五.总结 一.软件测试的生命周期 软件测试贯穿于软件的整个生命周…

Day-02-QPushButton设置信号与槽一在UI界面直接设置槽函数

1.点击UI界面 2.选择Push Button按键 3.右键选择转到槽 4.根据自己的需要选择信号事件 5.在自动生成的函数内编写自己需要完成的动作

【网络安全】服务基础第一阶段——第十一节:Windows系统管理基础----PKI技术与应用

目录​​​​​​​ 一、加密技术 1.1 基本保密通信模型 1.2 密码学发展 1.2.1 古典密码学&#xff08;1949年前&#xff09; 1.2.2 近代密码学&#xff08;1949&#xff5e;1975年&#xff09; 1.2.3 现代密码学&#xff08;1976年以后&#xff09; 1.3 古典密码 1.3.…

基因组学中的深度学习

----/ START /---- 基因组学其实是一门将数据驱动作为主要研究手段的学科&#xff0c;机器学习方法和统计学方法在基因组学中的应用一直都比较广泛。 不过现在多组学数据进一步激增——这个从目前逐渐增多的各类大规模人群基因组项目上可以看出来&#xff0c;这其实带来了新的挑…

数字签名,数字证书,时间戳

简介 数字签名、数字证书和时间戳是现代网络安全技术中的重要组成部分&#xff0c;它们共同确保了数据传输的安全性和完整性。 数字签名 数字签名是一种基于公钥加密技术的电子签名方式。它通过使用发送方的私钥对消息进行加密生成一个特定的签名值&#xff0c;并将该签名值与…

四川财谷通抖音小店新宠儿,科技生活一键购!

在数字经济蓬勃发展的今天&#xff0c;电商平台如雨后春笋般涌现&#xff0c;其中抖音小店凭借其庞大的用户基础、精准的算法推荐以及创新的营销模式&#xff0c;成为了众多商家竞相入驻的热门选择。而四川财谷通信息技术有限公司&#xff0c;作为这一领域内的佼佼者&#xff0…

煤矿广播通信系统

在煤矿这样的特殊工作环境中&#xff0c;煤矿广播通信系统发挥着至关重要的作用。它就如同煤矿中的“传音使者”&#xff0c;保障着各项工作的顺利进行和人员的安全。 系统功能 煤矿广播通信系统具备多种强大的功能。首先&#xff0c;它拥有实时广播功能&#xff0c;能够及时传…

应用商店优化(ASO)的四大误区

应用商店优化 (ASO) 是移动营销中最重要的部分之一&#xff0c;可以帮助开发人员吸引自然流量并在应用推广方面取得预期效果。近年来ASO优化在开发者中越来越受欢迎。虽然它已经证明了其有效性和对应用成功的影响力&#xff0c;但尽管如此仍然存在与ASO相关的误解&#xff0c;导…

Rust 赋能前端:PDF 分页/关键词标注/转图片/抽取文本/抽取图片/翻转...

❝ 我从不幻想成功。我只会为了成功努力实践 大家好&#xff0c;我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 WebAssembly Mupdf Pdf操作( 分页展示/文本抽离/文本标注/获取超链接/Pdf转图片/翻转/截取) 因为&#xff0c;行文…

Chrome 浏览器插件获取网页 window 对象(方案一)

前言 最近有个需求&#xff0c;是在浏览器插件中获取 window 对象下的某个数据&#xff0c;当时觉得很简单&#xff0c;和 document 一样&#xff0c;直接通过嵌入 content_scripts 直接获取&#xff0c;然后使用 sendMessage 发送数据到插件就行了&#xff0c;结果发现不是这…

【unplugin-vue-router】超级实用的自动路由,具体使用教程!

一、安装 vite 创建vue项目的时候选择 auto import 【推荐】 二、使用 原理&#xff1a;参考 vite 官网 来看一个简单的例子&#xff1a; 这是项目的pages目录结构 src/pages/ ├── index.vue ├── about.vue └── users/├── index.vue└── [id].vueunplugin-…

C语言08--指针数组结合

前言&#xff1a; 这次的指针数组结合乃作者呕心沥血之作&#xff0c;大家翻翻进度条就知道了&#xff0c;内容十分干货&#xff0c;各位读者若能全部耐心解析读懂了&#xff0c;想必也能理解掌握C语言中的数组指针这两把利剑了。 指针数组结合&#xff1a; 指针数组 概念&a…