VC环境下window网络程序:UDP Socket程序

2024-09-08 05:18

本文主要是介绍VC环境下window网络程序:UDP Socket程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在学Windows网络编程,正好在做UDPsocket的程序,贴上来:

服务器框架函数:

             socket();    bind();    recfrom();  sendto();  closesocket();

客户机框架函数:

           socket();      recfrom();  sendto();  closesocket();

二、具体代码如下所示,欢迎大家一起交流

首先要打开服务器进行监听,所以服务器server代码如下:

// udpse.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <winsock2.h>
#pragma  comment(lib,"WS2_32.lib")
#include <iostream>
int main(int argc, char* argv[])
{
 WSADATA wsaData;
 //初始化socket
 WSAStartup(MAKEWORD(2,2),&wsaData);
    //创建socket
 SOCKET recvSocket;
    recvSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
 //将socket进行绑定
 sockaddr_in reAddr;
 reAddr.sin_family=AF_INET;
 reAddr.sin_port=htons(5678);
 reAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 bind(recvSocket,(sockaddr *)&reAddr,sizeof(reAddr));
 //调用recvfrom函数绑定在socket接收到客户机数据
 //获取当前系统时间 sDataTime,
 SYSTEMTIME st;
 GetLocalTime(&st);
 //char sDataTime[30];
 printf("当前系统服务器时间:%4d-%2d-%2d %2d:%2d:%2d\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
 

 char recvBuf[1024];
 int bufLen=1024;
 //两个暂时没用的,客户机属性
 sockaddr_in FromclientAddr;
 int FromclientSize=sizeof(FromclientAddr);
 int lbuf=recvfrom(recvSocket,recvBuf,bufLen,0,(SOCKADDR *)&FromclientAddr,&FromclientSize);
 recvBuf[lbuf]='\0';

 printf("客户机IP地址是:%s,端口是:%d\n,发来的数据内容是:%s\n",inet_ntoa(FromclientAddr.sin_addr),FromclientAddr.sin_port,recvBuf);

 printf("接收完成,关闭socket\n");
 closesocket(recvSocket);
 //释放资源并退出
 WSACleanup();
 return 0;
}

 

三,客户机发送数据,代码如下:

// udp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <winsock2.h>
#pragma  comment(lib,"WS2_32.lib")
int main(int argc, char* argv[])
{
 WSADATA wsaData;
 //初始化socket
 WSAStartup(MAKEWORD(2,2),&wsaData);
 //套接字初始化
 SOCKET sendSocket;
 sendSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
 //设置即将连服务器地址
 sockaddr_in seAddr;
 seAddr.sin_family=AF_INET;
 seAddr.sin_port=htons(5678);
 seAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//;htonl(INADDR_ANY)
 
 //初始化
 char sendBuf[1024]="hello wang shu qing";
 int bufLen=1024;
    //向服务器发送数据
 printf("请输入发送数据给服务器:\n");
 scanf("%s",sendBuf);
    bufLen=strlen(sendBuf);
 //绑定
 sendto(sendSocket,sendBuf,bufLen,0,(SOCKADDR *)&seAddr,sizeof(seAddr));
 //发送完成,关闭socket
 printf("发送完成,关闭socket\n");
 closesocket(sendSocket);
 //释放资源并退出
 WSACleanup();
 return 0;
}

 四,效果图:

 

  

这篇关于VC环境下window网络程序:UDP Socket程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147216

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边