Winsock.简单UDP
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的更多相关文章
- Java 简单UDP通信
Java手册 java.net Class DatagramSocket java.lang.Object java.net.DatagramSocket All Implemented Interf ...
- Winsock.简单TCP
PS:vs2017 编译C++代码 支持 XP:项目属性-->链接器-->系统-->需要的最小版本--> 输入 "5.1" 1.ZC:测试:c向s 发送长度 ...
- 简单 UDP 操作类
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Ne ...
- c# 实现简单udp数据的发送和接收
服务端代码 static void Main(string[] args) { UdpClient client = null; string receiveString = null; byte[] ...
- Netty实现简单UDP服务器
本文参考<Netty权威指南> 文件列表: ├── ChineseProverbClientHandler.java ├── ChineseProverbClient.java ├── C ...
- Winsock 示例
#include "stdafx.h" #include <Windows.h> #include <iostream> #pragma comment(l ...
- 【JAVA网络流之TCP与UDP 】
一.ServerSocket java.lang.Object |-java.net.ServerSocket 有子类SSLServerSocket. 此类实现服务器套接字.服务器套接字等待请求通过网 ...
- Tcp/Ip协议族简单解读及网络数据包/报/帧数据格式及封装及解包;
http://www.creseek.cn/products-install/install_on_bsd_linux/ 中文检索 离线cloudera ecosystem components: h ...
- UDP通讯协议
常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠 ...
随机推荐
- Base64原理解析与使用
一.Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的 ...
- bg/fg/jobs
用于将某个任务放置后台运行,一般会与 ctrl+ z , fg, & 符号联用. 典型的场景就是将耗时的任务放于后台运行,例如打包某个占用空间大的目录,
- swiper插件的一些坑
最近正在做一个PC端和移动端的项目 正好用到了swiper 今天给大家拿来讲讲 swiper的官网http://www.swiper.com.cn/ 博主用的是4.0的版本 如果大家用的是3.0的版本 ...
- 关于Pi
- 【概率论】5-10:二维正态分布(The Bivariate Normal Distributions)
title: [概率论]5-10:二维正态分布(The Bivariate Normal Distributions) categories: - Mathematic - Probability k ...
- Java NIO?看这一篇就够了!
现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty.学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能.在前面2篇文章< ...
- ubuntu之路——day11.5 迁移学习
在深度学习领域中,最强力的理念之一就是可以将神经网络学习的一种知识应用到另一个独立的任务中. 看上面的例子,首先我们有一个已经完成训练的神经网络,其目标是图像识别,我们有了绿色的1000000张图片并 ...
- URLEncoder.encode 使用心得
1.解决接口GET请求中:参数包含中文问题? 通过URLEncoder.encode 可以解决.我此次使用的utf-8编码,所以对中文进行urlencode 编码 而在服务器短 使用的tomcat ...
- 小福bbs-冲刺日志(第二天)
[小福bbs-冲刺日志(第二天)] 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 UI重构完成 作业的正文 小福bbs-冲刺日志(第二天) ...
- Java8中LocalDate的使用---项目中日期处理
// 获取当前日期 LocalDate now = LocalDate.now(); // 设置日期 LocalDate now2 = LocalDate.of(2099, 2, 28); // 解析 ...