flash的socket安全策略机制默认端口为843,需要服务器在这个端口响应请求并返回信息;代码如下:

#include

#include

#include

#include

#include

void accept_cb(int fd, short events, void* arg);

void socket_read_cb(int fd, short events, void *arg);

int tcp_server_init(int port, int listen_num);

int main(int argc, char** argv)

{

int listener = tcp_server_init(843, 10);

if( listener == -1 )

{

perror(" tcp_server_init error ");

return -1;

}

struct event_base* base = event_base_new();

//添加监听客户端请求连接事件

struct event* ev_listen = event_new(base, listener, EV_READ | EV_PERSIST, accept_cb, base);

event_add(ev_listen, NULL);

event_base_dispatch(base);

return 0;

}

void accept_cb(int fd, short events, void* arg)

{

evutil_socket_t sockfd;

struct sockaddr_in client;

socklen_t len;

sockfd = accept(fd, (struct sockaddr*)&client, &len );

evutil_make_socket_nonblocking(sockfd);

printf("accept a client %d\n", sockfd);

struct event_base* base = (struct event_base*)arg;

//仅仅是为了动态创建一个event结构体

struct event *ev = event_new(NULL, -1, 0, NULL, NULL);

//将动态创建的结构体作为event的回调参数

event_assign(ev, base, sockfd, EV_READ | EV_PERSIST, socket_read_cb, (void*)ev);

event_add(ev, NULL);

}

void socket_read_cb(int fd, short events, void *arg)

{

char msg[4096];

struct event *ev = (struct event*)arg;

int len = read(fd, msg, sizeof(msg) - 1);

msg[len] = '\0';

char *reply_msg = "<?xml version=\"1.0\"?>";

if(strcmp(msg, "") == 0){

printf("recv the client msg: %s\r\n", msg);

printf("%s\r\n", reply_msg);

write(fd, reply_msg, strlen(reply_msg) );

close(event_get_fd(ev));

event_free(ev);

return ;

}

if( len <= 0 )

{

printf("some error happen when read\n");

close(event_get_fd(ev));

event_free(ev);

return ;

}

}

typedef struct sockaddr SA;

int tcp_server_init(int port, int listen_num)

{

int errno_save;

evutil_socket_t listener;

listener = socket(AF_INET, SOCK_STREAM, 0);

if( listener == -1 )

return -1;

//允许多次绑定同一个地址。要用在socket和bind之间

evutil_make_listen_socket_reuseable(listener);

struct sockaddr_in sin;

sin.sin_family = AF_INET;

sin.sin_addr.s_addr = 0;

sin.sin_port = htons(port);

if(bind(listener, (SA*)&sin, sizeof(sin)) < 0 )

goto error;

if(listen(listener, listen_num) < 0)

goto error;

//跨平台统一接口,将套接字设置为非阻塞状态

evutil_make_socket_nonblocking(listener);

return listener;

error:

errno_save = errno;

evutil_closesocket(listener);

errno = errno_save;

return -1;

}

2.编译后执行就ok!

gcc -Wall  -I/usr/local/include event.c -L/usr/local/lib -levent

linux c账户安全性,linux c flash安全策略相关推荐

  1. linux与windows安全性,Linux与Windows安全性比较.doc

    /article/61/388/2006/2006071922562.shtml ????安全问题对于IT管理员来说是需要长期关注的.主管们需要一套框架来对操作系统的安全性进行合理的评估,包括:基本安 ...

  2. 简述linux系统的安全性,Linux操作系统的安全性有哪些过人之处

    01用户/文件权限Linux的敲门砖 Linux操作系统的安全性是有目共睹的,相比Windows操作系统,到底Linux有哪些过人之处?这里我们就抛砖引玉,挑选三点重要的特点给大家说明,为什么说Lin ...

  3. linux cvs账户,在linux下为cvs创建用户

    在linux下为cvs创建用户 1.创建可以登陆cvs服务器的用户名和密码: #> su cvsroot #> vi /home/cvsroot/CVSROOT/passwd test1: ...

  4. linux管理账户是,Linux管理账户

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 1.1 功能 添加新用户 useradd 1.2 参数含义 -c 添加备注 -d 为主目录制定名字 -e 用YYYYY- ...

  5. 【安全运维】 linux 系统账户,网络,简易安全加固方案(第一部分),经测试可行...

    前言 讲到linux系统账户的管理以及安全,就必须涉及 /etc/passwd   /etc/shadow  这2个文件 这里以截图中文字说明的方式,来分析这2个文件的内容,并且给出一些实用的安全加固 ...

  6. Linux提升系统安全性:自动注销 TMOUT

    为了增强Linux系统的安全性,我们需要在用户输入空闲一段时间后自动注销并断开终端连接,这个操作可以设置/etc/profile文件中TMOUT值来实现,这样可以有效避免当管理员不在时其他人员对服务器 ...

  7. 【要闻】Kubernetes安全问题严峻、Linux v5.4安全性浅谈

    以下为您奉上今天的开源领域要闻. 谷歌提前发布Android 11首个开发者预览版 谷歌通常会在三月推出即将发布的Android预览版本.但谷歌今年更早实现了该功能,现已发布了Android 11首个 ...

  8. Linux MTD架构下的nand flash驱动详解

    转载自:http://blog.csdn.net/wang_zheng_kai/article/details/18988521 有了前面的基础(Nandflash详解:https://blog.cs ...

  9. 安全 lynis_如何使用Lynis审核Linux系统的安全性

    安全 lynis Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / Shutterstock If you perform ...

最新文章

  1. shell实现批量在多台windows服务器上执行同一命令并获取返回结果
  2. 日本搞笑研究:猫睡哪我睡哪,居然对睡眠质量没影响,还有这4点好处?
  3. (二)TestNG测试框架之注解及属性概览
  4. 吴恩达机器学习资源汇总帖
  5. springboot---集成mybits方法
  6. oracle 窗口函数 (keep)
  7. view类不响应自定义消息_安卓平台如何给控件添加自定义操作?
  8. nginx与PHP配置
  9. python编程(paddle ocr)
  10. 牛客网训练赛26D(xor)
  11. golang windows下杀进程
  12. Java工具-----native2ascii
  13. mysql连接报错3167_MySQL之使用过程中报错及处理记录(持续更新)
  14. 纽微特记事:刚内斗胜利,就说业务难做
  15. 最常用的springmvc注解使用技巧
  16. c语言图书管理系统简单代码,C语言图书管理系统代码
  17. 学校图书馆借阅管理系统软件项目分析
  18. 计算机一级表格技巧,计算机一级考试MS Office应试技巧指导
  19. 云原生安全之RASP技术(应用运行时自我保护)
  20. 快讯 | Elon Musk拟跨界做喜剧,号称要建立跨星系传媒帝国Thud!(轰!)

热门文章

  1. SAP CRM organization Model(组织架构模型)自动决定的逻辑分析
  2. SAP Spartacus里几个和Focus相关的directive的继承关系以及元素focus是如何实现的
  3. SAP Spartacus全局配置模块里和layoutSlot相关的配置
  4. SAP Fiori Elements - how facet is loaded for my productive POC
  5. SAP Hybris和ABAP Netweaver里的DAO(Data access object)
  6. where is list binding done for Opportunity S2 view default 20 returns
  7. 一个短小精悍的在线jshint工具
  8. 使用Eclipse连接SAP Netweaver系统遇到的错误消息和解决办法
  9. 如何通过js文件的名称,反查出这个js文件所在project的artifact id和group id
  10. find out the service list changed with given user which have item category group