智能家居项目(四)添加Socket服务器功能

本文档介绍了如何在智能家居项目中添加Socket服务器功能,包括新建socketContrl.c文件以实现服务器功能,更新InputCommand.h文件引入相关头文件,修改voiceContrl.c和mainPro.c文件以整合Socket功能。经过编译和运行测试,系统能成功与TCP客户端通信。
摘要由CSDN通过智能技术生成

1、新建socketContrl.c文件---->添加Socket服务器功能

#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include "InputCommand.h"
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>         
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

int socketGetCommand(struct InputCommander *socketMes)
{	
	int c_fd;
	int n_read = 0;
	struct sockaddr_in c_addr;
	memset(&c_addr,0,sizeof(struct sockaddr_in));
	int clen = sizeof(struct sockaddr_in);
	
	c_fd = accept(socketMes->sfd,(struct sockaddr *)&c_addr,&clen);
	
	n_read = read(c_fd,socketMes->command,sizeof(socketMes->command));
	if(n_read == -1){
		perror("read");
	}else if(n_read > 0){
		printf("\nget: %d\n",n_read);
	}else{
		printf("client quit\n");	
	}
	return n_read;
}
int socketInit(struct InputCommander *socketMes,char *ipAdress,char *port)
{
	int s_fd;
	struct sockaddr_in s_addr;                     //定义一个为套接字添加信息的结构体
	memset(&s_addr,0,sizeof(struct sockaddr_in));  //数据的清空处理
	s_fd = socket(AF_INET,SOCK_STREAM,0);          //创建一个服务端套接字
	if(s_fd == -1){
		printf("socket create fail\n");
	}

	s_addr.sin_family = AF_INET;
	s_addr.sin_port = htons(atoi(socketMes->port));
	inet_aton(socketMes->ipAddress,&s_addr.sin_addr);
	
	bind(s_fd,(struct sockaddr *)&s_addr,sizeof(struct sockaddr_in));  //为套接字添加信息

	listen(s_fd,10);
	printf("socket Server listening.....\n");
	socketMes->sfd = s_fd;
	return s_fd;
}
struct InputCommander socketContrl = {

	.commandName = "socketServer",
	.command = {'\0'},
	.port = "8128",
	.ipAddress = "19
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值