/***
* WIFI 通信参考 https://blog.csdn.net/weixin_40117614/article/details/89710894
*
*/
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <std_msgs/Empty.h>
#include <string>
#include <vector>
#include <sstream>
#include <cmath>
#include <cstdlib>//string转化为double
#include <iomanip>//保留有效小数
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h> //htons inet
#include <sensor_msgs/NavSatFix.h>
using namespace std ;
#define TCP_LISTEN_PORT 9901 //修改成自己的端口号
#define BUF_SIZE 100 //缓冲区大小,即一次读取多少
static struct sockaddr_in serv_addr;
static struct sockaddr_in clnt_addr;
int tcp_socket_fd = -1;
void TCP_Client_Socket_Init(void)
{
tcp_socket_fd = socket(PF_INET, SOCK_STREAM, 0);
if(-1 == tcp_socket_fd )
{
printf("socket() error\n");
return;
}
else{
cout<<"socker() right!"<<endl;
}
memset(&clnt_addr, 0, sizeof(clnt_addr));
clnt_addr.sin_family = AF_INET;
clnt_addr.sin_addr.s_addr = inet_addr("192.168.1.1"); //方式1 这里有两种读取网口方式
clnt_addr.sin_port = htons(TCP_LISTEN_PORT );
if(-1 == connect(tcp_socket_fd, (struct sockaddr*)&clnt_addr, sizeof(clnt_addr)))
{
printf("connect() error\n");
}
else
{
printf("connected...............\n");
}
}
int main()
{
char message[]="HI";
int srt_len;
socklen_t serv_adr_sz;
TCP_Client_Socket_Init();
serv_adr_sz = sizeof(serv_addr);
while(1)
{
send(tcp_socket_fd, message, strlen(message), 0 );
int str_lent = recv(tcp_socket_fd , message, BUF_SIZE -1, 0);
printf("%s",message); //如果在终端一直显示设备发出的数据,则表示连接成功
}
close(tcp_socket_fd);
return 0;
}
参考: