嵌入式学习-网络编程-Day1、2
一、思维导图
二、作业
1.编写客户端代码,实现对机械臂的控制
客户端实现代码
#include <myhead.h>
#define SER_IP "192.168.122.65" //服务器ip地址
#define SER_PORT 8886 //服务器端口号
#define CLI_IP "192.168.122.39" //客户端ip地址
#define CLI_PORT 6666 //客户端端口号
int main(int argc, const char *argv[])
{
//1 创建套接字
int cfd=-1;
if((cfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket error\n");
return -1;
}
//2 可以不绑定
//2.1填写地址信息结构体
struct sockaddr_in cin;
cin.sin_family=AF_INET;
cin.sin_port=htons(CLI_PORT);
cin.sin_addr.s_addr=inet_addr(CLI_IP);
int reuse = 1;
if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
{
perror("setsockopt error");
return -1;
}
//2.2绑定
if(bind(cfd,(struct sockaddr*)&cin,sizeof(cin))==-1)
{
perror("bind error");
return -1;
}
//3 连接服务器
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(SER_PORT);
sin.sin_addr.s_addr=inet_addr(SER_IP);
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
{
perror("connect error");
return -1;
}
printf("connect success\n");
//4 收发数据
char rbuf[5]="";
char red[5]={0xff,0x02,0x00,0x00,0xff};
char blue[5]={0xff,0x02,0x01,0x00,0xff};
//write(cfd,buf,sizeof(buf));//位置重置
while(1)
{
memset(rbuf,0,sizeof(rbuf));
printf("输入要发送的数据:");
fflush(stdout);
read(0,rbuf,sizeof(rbuf));
if(strlen(rbuf)>2)
printf("输入错误\n");
else if(rbuf[0]=='w')
{
if(red[3]<90)
red[3]+=5;
write(cfd,red,sizeof(red));
}else if(rbuf[0]=='s')
{
if(red[3]>-90)
red[3]-=5;
write(cfd,red,sizeof(red));
}else if(rbuf[0]=='d')
{
if(blue[3]<180)
blue[3]+=5;
write(cfd,blue,sizeof(blue));
}else if(rbuf[0]=='a')
{
if(blue[3]>0)
blue[3]-=5;
write(cfd,blue,sizeof(blue));
}
}
close(cfd);
return 0;
}
运行结果