题目:
通过w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂
代码:
#include<head.h>
#define SER_PORT 8888
#define SER_IP "192.168.115.129"
#define CLI_PORT 6666
#define CLI_IP "192.168.115.32"
int main(int argc, const char *argv[])
{
int sfd;
sfd=socket(AF_INET,SOCK_STREAM,0);
if(sfd<0)
{
perror("socket errror");
return -1;
}
int reuse = 1;
if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1)
{
perror("setsockopt error");
return -1;
}
printf("端口快速重用成功\n");
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(CLI_PORT);
sin.sin_addr.s_addr=inet_addr(CLI_IP);
if(bind(sfd,(struct sockaddr *)&sin,sizeof(sin))==-1)
{
perror("bind error");
return -1;
}
struct sockaddr_in cin;
cin.sin_family=AF_INET;
cin.sin_port=htons(SER_PORT);
cin.sin_addr.s_addr=inet_addr(SER_IP);
if( connect(sfd,(struct sockaddr*)&cin,sizeof(cin))<0)
{
perror("connect error");
return -1;
}
printf("连接成功\n");
char buf;
char str[5]={0xff,0x02,0x00,0x00,0xff};
char blue=0x00;
char red=0x00;
while(1)
{
/* bzero(buf,sizeof(buf));
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1]=0;*/
scanf(" %c",&buf);
switch(buf)
{
case 'w':{
str[2]=0x00;
if(red<0xff)
red+=1;
str[3]=red;
break;}
case's':{
str[2]=0x00;
red-=1;
str[3]=red;
break;}
case 'a':{
str[2]=0x01;
if(blue>0x00)
blue-=1;
str[3]=blue;
break;
}
case'd':{
str[2]=0x01;
if(blue<0xff)
blue+=1;
str[3]=blue;
break;}
}
if(send(sfd,str,sizeof(str),0)==-1)
{
perror("send error");
return -1;
}
}
return 0;
}