PS:vs2017 编译C++代码 支持 XP:项目属性-->链接器-->系统-->需要的最小版本--> 输入 "5.1"

1、ZC:测试:c向s 发送长度为0的数据,是可行的。(1)用s和c都在本机 测试,OK (2)用 冬的HP笔记本 和 我的联想小新笔记本 测试,OK

2、测试代码:

// SampleUDP_01.cpp : This file contains the 'main' function. Program execution begins and ends there.
// #define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <iostream> int main1();
int main2(); int main(int _argc, char** _argv)
{
std::cout << "Hello World!\n"; if (_argc <= )
{
printf("Command line no parameter .");
return ;
} printf("%s\n", _argv[]);
if (_argv[][] == 's')
main1();
else if (_argv[][] == 'c')
main2();
else
printf("Unknown command line parameter : %s\n", _argv[]); return ;
} #include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 8888 int main1()
{
WSADATA wsaData;
int Ret = WSAStartup(MAKEWORD(, ), &wsaData);
printf("Server!\n");
if (Ret != )
{
printf("无法初始化winsock.\n");
WSACleanup();
}
else { // printf("初始化winsock成功\n");
} if (LOBYTE(wsaData.wVersion) != ||
HIBYTE(wsaData.wVersion) != )
{
WSACleanup();
return ;
} SOCKET socket = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
sockaddr_in addr;
addr.sin_addr.S_un.S_addr = INADDR_ANY;
addr.sin_family = AF_INET;
addr.sin_port = ntohs(PORT); if (socket == INVALID_SOCKET)
{
printf("socket Error!");
}
int rs = bind(socket, (sockaddr*)&addr, sizeof(addr)); if (rs != )
{
printf("bind failed!");
return ;
}
char buf[] = "\0";
char temp[] = "\0";
sockaddr_in addrcl;
int len = sizeof(sockaddr); while () { int iRecv = recvfrom(socket, buf, sizeof(buf), , (sockaddr*)&addrcl, &len);//用新建的地址结构保存客户端的信息 if (iRecv == )
{
printf("recvfrom len : %d\n", iRecv);
break;
} sprintf(temp, "%s:%s", inet_ntoa(addrcl.sin_addr), buf);
sendto(socket, temp, strlen(temp) + , , (sockaddr*)&addrcl, sizeof(addr));
if (strcmp(buf, "srvexit") == )
{
break;
}
printf("%s", buf);
}
closesocket(socket); WSACleanup();
printf("exit\n");
return ;
} #include <WinSock2.h>
#include <stdio.h>
#define PORT 8888
int main2()
{
WSADATA wsaData;
int Ret = WSAStartup(MAKEWORD(, ), &wsaData);
printf("Client..!\n");
if (Ret != )
{
printf("无法初始化winsock.\n");
WSACleanup();
}
else { // printf("初始化winsock成功\n");
} SOCKET socketc = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
sockaddr_in addr;
//addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_addr.S_un.S_addr = inet_addr("192.168.2.102");
addr.sin_family = AF_INET;
addr.sin_port = ntohs(PORT); if (socketc == INVALID_SOCKET)
{
printf("socket Error!");
} int len = sizeof(sockaddr); while ()//client
{
char buf[] = "\0";
char rbuf[] = "\0";
printf("\n:");
scanf("%s", &buf);
//sendto(socketc, buf, strlen(buf) + 1, 0, (SOCKADDR*)&addr, len);//用回原来的地址结构
sendto(socketc, buf, , , (SOCKADDR*)&addr, len);//用回原来的地址结构
break; recvfrom(socketc, rbuf, sizeof(rbuf), , (SOCKADDR*)&addr, &len);
if (strcmp(rbuf, "exit") == )
{
break;
}
printf("%s", rbuf); } closesocket(socketc);
WSACleanup();
printf("end\n");
return ;
}

3、vs2017 编译C++代码 支持 XP

  

4、

5、

Winsock.简单UDP的更多相关文章

  1. Java 简单UDP通信

    Java手册 java.net Class DatagramSocket java.lang.Object java.net.DatagramSocket All Implemented Interf ...

  2. Winsock.简单TCP

    PS:vs2017 编译C++代码 支持 XP:项目属性-->链接器-->系统-->需要的最小版本--> 输入 "5.1" 1.ZC:测试:c向s 发送长度 ...

  3. 简单 UDP 操作类

    using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Ne ...

  4. c# 实现简单udp数据的发送和接收

    服务端代码 static void Main(string[] args) { UdpClient client = null; string receiveString = null; byte[] ...

  5. Netty实现简单UDP服务器

    本文参考<Netty权威指南> 文件列表: ├── ChineseProverbClientHandler.java ├── ChineseProverbClient.java ├── C ...

  6. Winsock 示例

    #include "stdafx.h" #include <Windows.h> #include <iostream> #pragma comment(l ...

  7. 【JAVA网络流之TCP与UDP 】

    一.ServerSocket java.lang.Object |-java.net.ServerSocket 有子类SSLServerSocket. 此类实现服务器套接字.服务器套接字等待请求通过网 ...

  8. Tcp/Ip协议族简单解读及网络数据包/报/帧数据格式及封装及解包;

    http://www.creseek.cn/products-install/install_on_bsd_linux/ 中文检索 离线cloudera ecosystem components: h ...

  9. UDP通讯协议

    常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠 ...

随机推荐

  1. ElasticSearch使用C#操作文档

    一.ElasticSearch的.net客户端驱动程序 ElasticSearch官方网站提供了两个.net客户端驱动程序,其中Elasticsearch.Net是一个非常底层且灵活的客户端驱动程序, ...

  2. golang-结构体的使用

    package main import ( "fmt" "unsafe" ) type Person struct { name string sex byte ...

  3. 64位内核第三讲,Windbg的使用.以及命令

    目录 一丶驱动的调试. 1.线程 2.断点 3.内存查看命令 4.修改内存命令 5.栈相关操作命令 6.进程线程命令(内核命令) 一丶驱动的调试. 编写驱动免不了调试.所以这里介绍一下WinDbg的常 ...

  4. fork()函数 图解

    code #include<stdio.h> #include <getopt.h> #include<iostream> #include<string&g ...

  5. mac webstorm 安装破解

    下载: 链接:https://pan.baidu.com/s/1A1afhcpPWMrQtOr1Suqs-g  密码:5r7b 激活码 K6IXATEF43-eyJsaWNlbnNlSWQiOiJLN ...

  6. Docker hello workd

    Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world runoob@runoob:~$ docker run ubunt ...

  7. meshing-网格加密

    ​原视频下载:http://yunpan.cn/cujvm8VbAPJZi  访问密码 0d3b

  8. jQuery学习笔记——基本了解

    安装 两种方法: 从 jquery.com 下载jQuery. 从 CDN 中载入 jQuery, 如从我的博客中加载 jQuery: <script src="https://blo ...

  9. Unity 2018 Game Development in 24 Hours Sams Teach Yourself 3rd Edition

    最新的Unity2018自学教材,如果新入坑Unity,直接从2018开始看吧! 点击下载提取码:tngj

  10. Spring AOP(通知、连接点、切点、切面)

    一.AOP术语 通知(Advice)  切面的工作被称为通知.通知定义了切面是什么以及何时使用.除了描述切面要完成的工作,通知还解决了何时执行这个工作的问题.5种通知类型: 前置通知(Before): ...