1 Star 0 Fork 0

chenyezhou/ARM Server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.c 2.00 KB
一键复制 编辑 原始数据 按行查看 历史
chenyezhou 提交于 2021-04-12 16:28 +08:00 . Temp codes are removed.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <pthread.h>
#include <memory.h>
#include <sys/ioctl.h>
#include <time.h>
#include <sys/time.h>
#include <fcntl.h>
#include "Fpga.h"
#include "AHB.h"
#include "ChooseCmd.h"
typedef struct sockaddr Sockaddr;
typedef struct sockaddr_in Sockaddr_in;
extern unsigned char mutex; //ahb互斥锁
extern unsigned char server_mutex;
int main()
{
Open_FPGA();
int ret;
int listensock;
Sockaddr_in addr_in;
//listensock = socket(AF_INET, SOCK_STREAM,0);
listensock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listensock == -1)
{
return -1;
}
//设置地址重用,避免前面异常错误退出后,无法绑定套接字
int on = 1;
ret = setsockopt(listensock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
memset(&addr_in, 0, sizeof(Sockaddr));
addr_in.sin_family = AF_INET;
addr_in.sin_addr.s_addr = htonl(INADDR_ANY);
addr_in.sin_port = htons(5000);
ret = bind(listensock, (Sockaddr *)&addr_in, sizeof(addr_in));
//互斥锁初始化
mutex = 0;
server_mutex = 0;
//
if (ret == -1)
{
return -2;
}
listen(listensock, 1024);
int consock;
while (1)
{
Sockaddr_in addr;
socklen_t addr_len = sizeof(addr); //必须初始化地址长度
consock = accept(listensock, (Sockaddr *)&addr, &addr_len);
if (consock == -1)
{
break;
}
printf("consock = %d\n", consock);
//设置超时为1us
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 1;
ret = setsockopt(consock, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(struct timeval));
pthread_t cid;
ret = pthread_create(&cid, NULL, ChooseCmd, (void*)(&consock));
if (ret != 0)
{
printf("Thread Created Error!\n");
break;
}
pthread_detach(cid);
usleep(100);
}
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/chenyezhou/arm-server.git
git@gitee.com:chenyezhou/arm-server.git
chenyezhou
arm-server
ARM Server
master

搜索帮助