1.配置linux系统日志。
2.在windows接收linux日志
3.通过正则表达式分析出危险操作并警告
首先我们先配置linux的转发
vim /etc/rsyslog.conf
这一样的IP地址是windows的ip*.* @192.168.16.79
然后重启rsyslog:service rsyslog restart。

xsyslog.cpp

#include "XUdp.h"
#incldue <iostream>using namespace std;int main(int argc,char *argv[])
{unsigned short por = 514;XUdp syslog;if (!syslog.Bind(port)){return -1;}char buf[2000] = {0};for (;;){int len = syslog.Recv(buf, sizeof(buf));if (len <= 0){continue;}buf[len] = '\0';cout << buf << endl;}return 0;
}

XUdp.h

//#pragma once
#ifndef _XTCP_H_
#define _XTPC_H_
#include <string>
class XUdp
{
public:XUdp();~XUdp();int CreateSocket();vpid Close();bool Bind(unsigned short port);char ip[16];unsigned short port = 0;int Recv(char* buf, int bufSize);protected:int sock = 0;
private:void* addr = NULL;
};#endif //_XTCH_H_

XUdp.cpp

#ifdef WIN32
#include <Windows.h>
#define socklen_t int
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <fcntl.h>
#define closesocket close
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <thread>using namespace std;XUdp::XUdp()
{
#ifdef WIN32static bool first = true;if (first){first = false;    //保证只进入一次WSADATA ws;WSAStartup(MAKEWORD(2, 2), &ws); //相当于加载了动态库,给引用增加1,这个只需要调用以此,但是需要调用在最前面}#endifmemset(ip, 0, sizeof(ip));}int XUdp::CreateSocket()    //第一步创建socket
{sock = socket(AF_INET, SOCK_DGRAM, 0);if (sock == -1){printf("create socket failed!\n");}return sock;
}void XUdp::Close()
{if (sock <= 0)return;closesocket(sock);if (addr){delete addr;}addr = 0;sock = 0;
}bool XUdp::Bind(unsigned short port)
{if (sock <= 0)CreateSocket();//创建sockaddr_in saddr;saddr.sin_family = AF_INET;   //协议saddr.sin_port = htons(port); //本地字节序转换为网络字节序saddr.sin_addr.s_addr = htonl(0);   //任意ip地址发过来的数据都接收//绑定//用bind绑定,绑定哪一个端口if (::bind(sock, (sockaddr*)&saddr, sizeof(saddr)) != 0){printf("bind port %d failed!\n", port);return false;}printf("bind port %d success!\n", port);listen(sock, 10);    //这个函数已经调用,就会告诉系统,这个socket可以通过这//个端口来跟它进行接收连接了//但是,连接的信息还会用到另外一个函数。10指的是在我这次获取连接信息的时候//最大支持多少个连接信息return true;
}int XUdp::Recv(char* buf, int bufsize)
{if (sock < 0)return 0;if (addr == NULL){addr = new sockaddr_in();}socklen_t len = sizeof();int re = recvfrom(sock, buf, bufSize, 0, (sockaddr*)addr, &len);return re;
}

C++socket编程(九):9.1 UDP实战Syslog服务器相关推荐

  1. python的基础网络编程是下列_Python入门基础之网络编程、socket编程、TCP、UDP编程...

    忙了两天,继续更文!希望多多支持. 套接字 套接字是一种具有之前所说的"通讯端点"概念的计算机网络数据结构.网络化的应用程序在开始任何通讯之前都必需要创建套接字. 套接字有三种: ...

  2. python监听多个udp端口_Python的Socket编程过程中实现UDP端口复用的实例分享

    关于端口复用 一个套接字不能同时绑定多个端口,如果客户端想绑定端口号,一定要调用发送信息函数之前绑定( bind )端口,因为在发送信息函数( sendto, 或 write ),系统会自动给当前网络 ...

  3. C++socket网络编程大全实战http服务器(支持php)视频课程-夏曹俊-专题视频课程

    C++socket网络编程大全实战http服务器(支持php)视频课程-16782人已学习 课程介绍         C++socket网络编程大全实战http服务器(支持php)视频培训教程概况:本 ...

  4. asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  5. socket 编程基础

    网络模型 osi 参考模型,tcp/ip 参考模型 网络通讯要素 ip地址,端口号,传输协议 IP地址就是我想找到他的主机地址,但是如何区分是feiq 找他还是qq 找他用端口号区分,每一种进程的端口 ...

  6. 广播、组播 socket编程

             目录 1.单播 / 广播 / 组播 的概念 (1) 单播 (2) 广播 (3) 多播(组播) 2.广播 socket编程(只能是UDP通信) 3.多播 socket编程(只能是UDP ...

  7. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  8. Socket 编程原理

    目录 socket编程 基本概念 编程流程 socket函数 协议 TCP UDP DNS HTTP HTTPS socket编程 基本概念 socket编程即计算机网络编程,目的是使两台主机能够进行 ...

  9. Socket编程(C语言实现)——UDP协议(进程间通信AF_UNIX)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【循环监听】

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

最新文章

  1. 鲲鹏应用创新大赛山西区域赛圆满落幕,鲲鹏生态助力信创变革
  2. linux 记一次链路聚合
  3. 使用Xshell工具连接虚拟机
  4. linux 删除乱码的文件夹,Linux服务器删除乱码文件和文件夹的方法
  5. java怎么把system.out的东西输出到文件上
  6. Eclipse JPA Project创建
  7. iOS开发之解析XML格式数据
  8. Vue3源码之createApp
  9. 《我要进大厂》之mysql夺命连环13问
  10. 华为荣耀7i刷linux,奇兔刷机独家支持华为荣耀7i一键刷机 全网首发刷机ROM包
  11. 车载以太网转换器 100/1000BASE-T1 转换器
  12. css设置格子背景,跟本子一样
  13. Qt官方示例-虚拟键盘使用
  14. Qt5.12.x 导入CMakeLists.txt 工程 提示 No suitable kits found.
  15. 【SCI征稿】年底冲计算机神刊!最快1-2个月见刊!
  16. “serve with message ‘spawn vue-cli-service ENOENT”的解决办法
  17. 二叉树已知两种遍历结果求另一个遍历结果
  18. reactos 编译,安装篇
  19. Win10中Docker下修改mysql配置(主要修改utf-8字符集)
  20. K12在线教育平台的产品需求

热门文章

  1. JavaWEB过滤器和监听器技术
  2. SQLSERVER2008R2正确使用索引
  3. 教学楼电梯调度需求分析
  4. MySQL查询优化--细节理论
  5. Effective c++ 9 53...55
  6. 修改environment导致重启不能登录的问题解决
  7. 机器人电焊电流电压怎么调_西安焊接机器人工作站的主要设备有哪些?西安瑞斯曼...
  8. netbeans基于mysql学生信息_学生信息管理系统的设计与实现(NetBeans IDE,MySQL)
  9. linux如何更新数据包up,Linux更新(update/upgrade) 修改更新源
  10. C++ vector类的模拟实现