gpt4 book ai didi

c - 基于 Matlab C 的 Mex 文件,套接字未运行

转载 作者:行者123 更新时间:2023-11-30 19:51:34 25 4
gpt4 key购买 nike

我想更多地了解 C/C++ 中的网络工具,我决定将一些 C echo 服务器编码到 mex 文件中,以便通过 Matlab 进行使用。问题是,当我构建 mex 文件并执行它时,它似乎会永远运行而不监听套接字或任何东西。我在代码中包含了一些打印语句来测试我们是否正在输入 mex 文件,但目前它们根本没有打印。代码如下:

#define char16_t UINT16_T //shenanigans with the compiler

#include "mex.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>

void echo(){

char str[100];
int listen_fd, comm_fd;
struct sockaddr_in servaddr;

listen_fd = socket(AF_INET, SOCK_STREAM,0);
bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htons(INADDR_ANY);
servaddr.sin_port = htons(22000);

bind(listen_fd, (struct sockaddr *) &servaddr, sizeof(servaddr));

mexPrintf("Listening");

listen(listen_fd, 10);

comm_fd = accept(listen_fd, (struct sockaddr *) NULL, NULL);
mexPrintf("Connected");

while(1)
{
bzero(str, 100);
read(comm_fd, str, 100);
mexPrintf("Echoing back - %s", str);
write(comm_fd, str, strlen(str)+1);
}

}

void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mexPrintf("Starting");

echo();

mexPrintf("Finishing");
}

任何帮助将不胜感激。

最佳答案

因此,在测试了 echo 服务器之后,它实际上似乎正在工作,只是只要有一个套接字打开,它就不会打印。很奇怪!

关于c - 基于 Matlab C 的 Mex 文件,套接字未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41251612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com