여러개의 device가 연결 되어 있을 때 간단히 확인 하는 코드 입니다.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define MB_TCP_PORT 502
int main(int argc, char *argv[]) {
int sockfd;
struct sockaddr_in serv_addr;
char *ip_addr;
if (argc < 2) {
fprintf(stderr, "Usage: %s <IP address>\n", argv[0]);
exit(EXIT_FAILURE);
}
ip_addr = argv[1];
fprintf(stderr, "ipaddress : %s\n",ip_addr);
// 소켓 생성
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("ERROR opening socket");
exit(EXIT_FAILURE);
}
// 서버 주소 설정
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(MB_TCP_PORT);
serv_addr.sin_addr.s_addr = inet_addr(ip_addr);
//a if (inet_pton(AF_INET, ip_addr, &serv_addr.sin_addr) <= 0) {
// fprintf(stderr, "Invalid IP address: %s\n", ip_addr);
// exit(EXIT_FAILURE);
// }
// 연결 시도
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
perror("ERROR connecting");
exit(EXIT_FAILURE);
}
// 연결 성공
fprintf(stderr,"Success to Connected %s\n\n", ip_addr);
// 소켓 닫기
close(sockfd);
return 0;
}
빌드 및 테스트
gcc modbustest.c
./a.out 192.168.102.11
여러개의 포트를 확인하기 위해서 아래와 같은 shell script 추가 (파일명 check_connection.sh)
./a.out 192.168.102.11
./a.out 192.168.102.12
./a.out 192.168.102.13
./a.out 192.168.102.14
./a.out 192.168.102.15
./a.out 192.168.102.16
./a.out 192.168.102.17
./a.out 192.168.102.18
스크립트 실행하여 확인
./check_connection.sh
리눅스에서 서비스 만들기 (0) | 2023.04.27 |
---|---|
[TIP] 데비안/우분투 개발 시 Compile Error (0) | 2022.12.05 |
[리눅스] 파일 이름 일괄 변경 / 파일 내용 일괄 변경 (0) | 2022.04.21 |
[ubuntu 서버만들기 #5] jupyter notebook 서버 설정 (0) | 2022.01.10 |
[ubuntu 서버만들기 #4] 아나콘다 설치하기 (0) | 2022.01.10 |
댓글 영역