网关-linux系统下缓冲机制问题

问题描述

linux系统下缓冲机制问题
刚开始接触linux系统,所问问题可能小白,还望见谅。

最近再做一个CAN转以太网的网关,也就是CAN总线收到数据,通过以太网转发出去;以太网收到数据,通过CAN总线转发出去。

硬件用的是atmel的arm9处理器,软件用的是linux操作系统。现在的进展是CAN总线和以太网的收发都已经ok了。代码如下:

void SendUp()
{
while(1)
{
CAN_Receive();
LoadMessage();
TCP_Write(UpMessageBuf,MessageLength);
}
}

void SendDown()
{
int TcpReceiveBytes=0;
while(1)
{
TcpReceiveBytes=TCP_Read(DownMessageBuf);
DownMessageBuf[TcpReceiveBytes]=0;
printf("TCP Receive %d bytes:%sn",TcpReceiveBytes,DownMessageBuf);
CAN_Send(DownMessageBuf,TcpReceiveBytes);
}
}

用了两个线程,分别进行上行数据的转发和下行数据的转发,即等待收到数据,读取数据,转发数据;再等待接收数据……依次类推。可以看出,目前没有使用任何缓冲机制。

所以请教各位,对于我的这样一个功能,使用什么缓冲机制比较有效?另外,完成这个功能,使用线程好还是使用进程好?
时间: 2024-09-29 11:11:25

网关-linux系统下缓冲机制问题的相关文章

sharly浅谈虚拟主机linux系统下的安全设置

美国虚拟主机大都使用Linux操作系统,因此当用户在使用美国虚拟主机的时候,Linux系统的安全问题就成为了使用者最为关心的问题,毕竟谁都希望自己操作的是一个稳定又安全的系统. 什么是Linux呢?Liunx的官方定义:"Linux是一种UNIX操作系统的克隆,它(的内核)由Linux Torvalds以及网络上组织松散的黑客队伍一起从零开始编写而成.LINUX的目标是保持和POSIX的兼容."众所周知,Linux是一种开放源代 码的操作系统,由于它的自由开放性和技术先进性,顺应了广大

日志-linux系统下有Sense Key:recovered error [current]错误

问题描述 linux系统下有Sense Key:recovered error [current]错误 日志里有大量如图报警,不知道是什么原因引起的,查了ASC和ASCP也没有什么结果,拜托有知道的大神,给小弟指条明路 解决方案 看看是不是硬盘有坏道,或者文件破坏 参考:http://blog.itpub.net/25362835/viewspace-1058637/ 解决方案二: http://bbs.chinaunix.net/thread-4086486-1-1.html

ext下拉框在linux系统下,输入框有XX的关闭

问题描述 ext下拉框在linux系统下,输入框有XX的关闭 如果所示,在linux系统,可输入的下拉框有XX的按钮,但是本地却没有,不知道这个该怎么设置,现在的问题是,linux系统上点那个XX没有效果,点击为空后,鼠标放到别的地方时,当时选得值又出现了,有没有人知道这个梗.

Linux系统下使用mail发送Internet邮件的配置方法

  用惯了windows系统的用户可能一开始对linux系统掌握不好,很多功能可能用起来不是很习惯.本文就介绍了linux系统的一个小应用:在Linux系统下使用mail发送Internet邮件.不过在介绍mail之前先来看一下先来看一下sendmail服务. Red Hat上sendmail服务一般是自动启动的.可以通过下面的命令查看sendmail服务的状态: service sendmail status 如果sendmail服务未启动可以使用如下命令启动: service sendmai

Linux系统下的文件传输工具:RZSZ的用法

Linux系统下传输方式很多,比如:通过FTP SFTP - 等等.linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地,根据RZSZ特性,这里我们通过SecureCRT提供ZModem配合RZSZ传输工具进行讲解 首先先了解与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到

Linux系统下优秀的代理服务器软件:Squid

作为一种免费的网络操作系统,Linux越来越受到广大网络爱好者的欢迎,目前Internet上运行的主机有相当一部分采用的就是Linux,而且中国已经把Linux作为政府上网的指定网络操作系统.种种迹象表明,Linux正在逐渐走向成熟. 为了解决Internet发展迅速和IP地址资源紧张的矛盾,代理服务器的使用越来越广泛.Squid是一种在Linux系统下使用的比较优秀的代理服务器软件. 代理服务 代理服务是指由一台拥有标准IP地址的机器代替若干没有标准IP地址的机器和 Internet上的其它主

linux系统下grep egrep fgrep用法以及正则表达式

一.grep.egrep.fgrep命令 本文中主要介绍了linux系统下grep egrep fgrep命令和正则表达式的基本参数和使用格式.方法.(注释:文中fg代表例子,) 1.1.基本定义: grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来. grep是很常见也很常用的命令,它的主要功能是进行字符串数据的比较,

linux系统下如何使用assert函数

  linux系统下使用assert函数的方法. 步骤如下: assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息, 然后通过调用 abort 来终止程序运行. 请看下面的程序清单badptr.c: #inc

Linux系统下无法访问mysql怎么办?

mysql是一个关系型数据库管理系统,但最近有用户反映,在Linux系统下无法访问mysql,相信不少用户都有遇到过这个问题,这是怎么回事呢?Linux系统下无法访问mysql该怎么办呢?下面我们一起来看看解决方法. 1.问题及异常 ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@75d634ea -- APPARENT DEADLOCK!!! Co