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以内: --因无连接,是不可靠 ...
随机推荐
- A. Vasya and Book ( Codeforces Educational Codeforces Round 55 )
题意:当前在看书的第 x 页,每次可以向前或者向后翻 d 页,这个书一共 n 页,问能否用最小操作翻到第 y 页. 题解:三种情况:1.直接翻能到的一定最短. 2.先翻到第一页,然后往后翻,翻到第 y ...
- 【随记】Sql Server 2008 R2 备份时“无法打开备份设备”
如下图所示,在执行SQL一个简单的备份命令时发生下面的错误 可能的原因: 1.文件夹权限问题: 2.Sql Server SQLServer服务器用户策略问题: 问题排查: 1.查看了temp文件夹, ...
- 将WSL2作为生产力工具
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 10新增的功能,使用它可以直接在 Windows 上运行 Linux 命令.而WSL 2 是WSL的一个新版本,它支持适 ...
- 微信小程序丨将溢出的文本用省略号代替的方法
下面进入正题,有关于将溢出的文本用省略号代替的方法,不知道什么原因,我的程序用传统的代码无法解决: .text{ white-space: nowrap; overflow: hidden; text ...
- 判断x的m次方和y的m次方末尾三位数是否相等
/*==============================================对于任意给定的两个正整数x和y,是否存在一个不超过100的正整数m使得x^m与y^m的末尾三位数相等呢? ...
- layuiadmin(iframe)常用问题集锦
1. 弹出窗口中传值给父层表单 table.on('tool(tableList)', function(obj){ var selected = obj.data; var layEvent = o ...
- Python设计模式之MVC模式
# -*- coding: utf-8 -*- # author:baoshan quotes = ('A man is not complete until he is married. Then ...
- 三、HTTP响应
HTTP消息是服务器和客户端之间交换数据的方式 有两种类型的消息: 请求--由客户端发送用来触发一个服务器上的动作 相应--来自服务器的应答 一.HTTP响应的构成 1.状态行 HTTP响应的起始行被 ...
- Qt 操作excel报错
onecore\com\combase\catalog\catalog.cxx(2376)\combase.dll!00007FFF1DF823CB: (caller: 00007FFF1DED3A1 ...
- evo:评测slam参数设置
zn@buaa:~$ evo_ape euroc m1/state_groundtruth_estimate0/data.csv pl-svo-master2/trajout.txt -angle_d ...