小编ano*_*_16的帖子

C 程序通过另一个接口接收和发送相同的数据包

我有一个带有两个物理接口的 linux 系统。我需要通过一个接口拦截(读取)传入的数据包,读取(或处理)数据并按原样通过另一个接口将其发送出去 - 就像中间人一样。我能够从数据包中提取所有标头字段和有效载荷数据,但我无法再次将其放回线路上。如何在通过另一个接口的途中发送数据包?

// All #includes 

struct sockaddr_in source,dest;
int i,j,k;
int main()
{
    int saddr_size , data_size;
    struct sockaddr_in saddr;
    unsigned char *buffer=malloc(65535);


    int sock_raw = socket( AF_PACKET , SOCK_RAW , htons(ETH_P_ALL)) ;

     if(sock_raw < 0)
        perror("setsockopt");

    setsockopt(sock_raw , SOL_SOCKET , SO_BINDTODEVICE , "eth0" , strlen("eth0")+ 1 );

    if(sock_raw < 0)
    {
        perror("Socket Error");
        return 1;
    }

    while(1)
    {
        saddr_size = sizeof (struct sockaddr);
        //Receive a packet
        data_size = recvfrom(sock_raw , buffer , 65536 , 0 ,(struct …
Run Code Online (Sandbox Code Playgroud)

c sockets networking packet-capture

5
推荐指数
1
解决办法
1万
查看次数

使用Node JS/Express提供包含图像的静态HTML页面

我可以使用express提供静态HTML页面.我还安装了"ejs",用我的.js文件中的局部变量数据呈现页面.我只需要在页面的一角显示一个小徽标以及其他数据.在浏览器中打开html文件就可以很好地加载图像了,但是在服务器上我得到了一个破损的图像.我认为这可能是我的文件路径或目录结构的问题.这是我原始的简单代码,没有徒劳的尝试:

server.js

var express = require ('express');
var fs = require ('fs');
var app = express ();
var bodyParser = require ('body-parser');
app.use (bodyParser ());
var server = require ('http').createServer (app);
app.set('views', __dirname + '/views');
app.engine('.html', require('ejs').__express);

var my_name="Goku";
var my_power=9001;

app.get ('/', function (req, res){
    console.log ('GET /');
    res.render('index.html',{name:my_name,power:my_power});    
    });

server.listen (8888);
Run Code Online (Sandbox Code Playgroud)

的index.html

<html>
<body>
<input id="name" value=" <%=name%> " /><br>
<input id="power" value=" <%=power%> "/><br>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我没有包含img src行,所以你可以给我完整的一行,人们有时会忽略我微妙的语法错误.关于目录结构,我只在我的/ home文件夹中有'server.js'文件和'索引. html'文件在/ home/views中


Ploutch提供的解决方案:我将logo.jpg移动到我在'/ home'下创建的'/ images'文件夹中我刚刚添加了这些行 -

server.js

app.use(express.static(__dirname …
Run Code Online (Sandbox Code Playgroud)

html ejs node.js express

4
推荐指数
1
解决办法
2万
查看次数

Printf返回值没有return语句

在3个不同的系统上尝试过:CentOS,Ubuntu和Windows(MinGW); 所以我不认为这是一个异常(未定义的行为)

int hello(void)
{
        (void)printf("HELLO WORLD\n");
}

int main(void)
{
        printf("%d\n",hello());
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

你好世界
12

即使使用不同的文本,它也会返回正确的值.有什么解释吗?

c return

-1
推荐指数
1
解决办法
154
查看次数

标签 统计

c ×2

ejs ×1

express ×1

html ×1

networking ×1

node.js ×1

packet-capture ×1

return ×1

sockets ×1