본문 바로가기

SOCKET3

[리눅스/linux] 윈도우 소켓 테스트 프로그램 / window socket test program data-ad-unit = "DAN-s100g804lcms" data-ad-width = "728" data-ad-height = "90"> 서버 프로그램을 개발하다 보면 클라이언트를 붙여서 테스트 할 일이 생긴다 그럴때 사용하면 좋은 프로그램이 있어 소개하려 한다 바로 ezterm 이라는 프로그램으로 그간 서버 개발시 여러가지 소켓 테스트 프로그램을 사용해 봤지만 이번에 hex값을 주고 받아야 하는 프로젝트를 진행함에 따라 구글 검색을 하였고 해당 프로그램을 접하게 되었다 프로그램을 실행시키면 정말 간단하게 창이 나뉘어 있는데 위쪽은 내가 접속한 서버로부터 받은 데이터 아래쪽은 내가 서버로 전송한 데이터를 보여준다 내가 접속하고자 하는 서버의 주소와 포트번호를 입력 후 접속하기를 누르면 서버에 접속이 .. 2020. 4. 9.
[리눅스/linux] 소켓접속 알고리즘 / Socket Connection algorithm 소켓통신 프로그램을 만들다 보면 이러한 고민들을 한번쯤 해보게 된다. 바로 통신시에 필요한 fd를 어떻게 할 것인가? fd를 다루기에 앞서서 소켓이 바뀌어 들어오거나 하는 경우등을 생각해야 한다 말로는 설명이 애매하니 아래 그림을 보면서 설명하겠다 예를들어 서버에 접속하는 3개의 소켓이 있다고 가정하자 DB에 저장하기 앞서 구분하기 쉽게 고유코드의 ID값을 지정해준다 그리고 이것을 DB상에 저장을 하면 아래와 같이 저장한다 이렇게 저장해서 서버에서 해당 Client로 데이터를 보내고자 할 때 Select socket_num from table where 0001 이렇게 fd값을 가져와서 write 해주면 전송이 잘 되는것을 확인 할 수 있다 그런데 문제는 이런 보통적인 상황이 아니라 여러가지 변수에 의해.. 2020. 4. 9.
리눅스 bind error 리눅스 프로그래밍을 하다보면 컴파일 완료한 파일을 실행시킬 때 간혹 bind error를 접하는 경우가 있다. 도대체 bind error 라는 놈은 왜 무엇때문에 발생하는 것인가?? 기본적으로 이 에러는 해당 프로그램 소켓으로 연결이 실패할때 발생한다. 정말 간단하게 그림으로 설명하면 서버 프로그램에서 대상이 되는 소켓에 bind를 요청하면 정상적으로 연결이 맺어지게 된다. 하지만 연결을 끊고 바로 bind 요청을 하면 우리가 흔하게 볼 수 있는 bind error를 만나게 된다. 구조로 들어가면 너무 복잡한 이야기이므로 간단하게 이렇게 알아두자. 즉 프로그램 또한 bind와 해제에 소켓을 닫고 여는 등의 소요 시간이 필요한데 연결이 해제되는데 소요되는 시간 안에 재 bind 요청이 들어오면 서버에서는 .. 2020. 4. 7.