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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.