pthread를 사용한 C언어 TCP 소켓 서버/클라이언트 예제입니다. 2021. 7. 4 최초작성 2023. 11. 18 코드 설명 추가 원본 코드 출처는 아래 깃허브 저장소입니다. https://github.com/shineyr/Socket 다음처럼 코드를 컴파일합니다. $ gcc -o server server.c -lpthread $ gcc -o client client.c -lpthread 터미널을 두개 사용하여 다음처럼 코드를 실행합니다. 1. 서버 프로그램 실행 ./server 2. 클라이언트 프로그램 실행 - 같은 피시가 아니면 127.0.0.1 대신에 서버 프로그램이 실행된 PC의 IP를 사용합니다. ./client 127.0.0.1 클라이언트 프로그램에서 입력한 문자열이 서버 프로그램으로..
안녕하세요. 웹나우테스입니다. 혹 블로그의 카테고리를 살펴보다가 이 글을 보실 분이 있을까 싶어서 적어봅니다. 아니 종종 적을 계획입니다. 요즘은 우연히 알게된 줄리아(julia) 언어를 공부하고 있습니다. 추후 Julia 언어를 위한 OpenCV를 해보려고 합니다. Python도 OpenCV때문에 처음 공부하게 되었는데 최근 많이 사용하는 언어가 되버렸네요. Rust 언어를 위한 OpenCV를 해볼 생각도 있었지만 Rust가 쉽지 않아서 망설이게 되네요. OpenCV를 중심으로 언어를 공부해나가는 느낌입니다. 줄리아 공부할 자료를 찾다가 발견한 아래 사이트를 보고 정리하기 시작했는데 줄리아 공식 사이트에 있는 문서도 괜찮아 보이네요. ChatGPT의 도움을 받으며 내용을 보완하고 있습니다. https:..
파이썬의 TCP 소켓을 사용하여 웹캠에서 캡쳐한 이미지를 전송하는 서버와 클라이언트를 간단히 만들었습니다. 웹캠으로부터 이미지 캡쳐는 OpenCV를 사용하였습니다. 서버에는 두 종류의 쓰레드를 생성합니다. 웹캠으로부터 캡처한 이미지를 큐에 삽입하는 쓰레드와 클라이언트가 접속하면 큐에서 이미지를 꺼내어 클라이언트에 전송하는 쓰레드입니다. 서버에서 이미지를 전송하기 전에 넘파이 배열을 압축한 후, 최종적으로 String으로 변환해야 하고 클라이언트에서는 수신된 String 데이터를 넘파이 배열로 변환하여 화면에 보여줍니다. 서버 프로그램을 실행 후, 웹캠 영상이 화면에 보여지면 클라이언트 프로그램을 실행하세요. 여러 개 실행가능한데 몇 개 까지 가능한지 확인 안해봤습니다. 파이썬에서 소켓 사용하는 방법에 대..
파이썬으로 작성한 TCP 서버/클라이언트 소켓 예제코드입니다. 클라이언트가 서버에 접속하여 통신이 시작되는 방식입니다. 1. TCP 소켓 2. 간단한 에코 서버, 클라이언트 예제 3. 쓰레드를 사용한 에코 서버와 클라이언트 예제 최초작성 2019. 9. 27 최종작성 2023. 7. 23 1. TCP 소켓 파이썬에서 TCP(Transmission Control Protocol)를 사용하려면 소켓 타입을 socket.SOCK_STREAM으로 지정하고 socket.socket 함수를 사용하여 소켓 객체를 생성하면 됩니다. TCP의 장점은 다음과 같습니다. 1. 수신자가 전달 받지 못한 패킷을 발신자가 감지하여 재전송하기 때문에 신뢰성이 높습니다. 2. 발신자가 전송한 순서대로 수신자에서 읽게 됩니다. UDP..
아두이노 우노에 ESP8266 WiFi 모듈을 연결하고 TCP 서버 프로그램을 실행한 후, 라즈베리파이에서 TCP 클라이언트 프로그램으로 접속하여 아두이노에 연결된 LED를 제어하는 예제입니다. 아두이노에서 사용한 코드는 WeeESP8266 라이브러리 예제를 수정한 것이고, 라즈베리파이에서 사용한 코드는 다음 사이트의 코드를 사용했습니다. https://www.cs.cmu.edu/afs/cs/academic/class/15213-f99/www/class26/ 진행하기 전에 다음 포스팅을 참고하여 아두이노 우노에 ESP8266을 연결하고 필요한 WeeESP8266 라이브러리를 설치해야 합니다. Arduino UNO에서 ESP8266 WiFi 모듈을 사용하는 방법http://webnautes.tistory...
#include #include #include #include #include #include #include #include #include #include #include #include #include struct thread_data{ int fd; char ip[20]; }; void *ThreadMain(void *argument); // get sockaddr, IPv4 or IPv6: void *get_in_addr(struct sockaddr *sa) { if (sa->sa_family == AF_INET) { return &(((struct sockaddr_in*)sa)->sin_addr); } return &(((struct sockaddr_in6*)sa)->sin6_addr); }..