(VB.NET) Socket communication 입문

http://vb.net-informations.com/communications/vb.net_chat_server.htm

사내에서 쓰는 장비가 직렬통신이 안되는게 있고, Active X로 동작하는 친구들이 있길래 요새 트렌드인 64비트 환경에서는 먹통인게 너무 많더라고요..
그래서 개선된 프로그램 제작해서 배포하려고 찾아보니 VB.NET이라는 언어로 이더넷 / 직렬통신이 가능하네요~ 역시 마소구글형님들은 대단한거 같아요~~

dll을 로드해서 구현하던 VBA 방식을 베껴 쓰다가 python과 같이 단순히 Import System.Net.Sockets를 사용하는 걸 보고 정말 놀랐네요;;; 지금까지 전 뭘한걸까요~~

여튼 장비랑 통신을 해야해서 자료를 찾다보니 위의 예제로 실행하면 가능할 것 같습니다.
위의 예제에는 송수신 버퍼사이즈가 10024로 되어있는데, 실행하면 소켓의 송수신 버퍼사이즈가 65536으로 나와서 에러가 뜨더라고요~ 그래서 바이트 버퍼 배열의 사이즈를 아래와 같이 소켓 버퍼 사이즈로 바꾸니까 되더라고요~ 이유는 모르겠습니다.. 공부를 더 해봐야겠네요.. 역시 근본없는 넘이라 제약이 많네요~ ㅋㅋ 왠지 버퍼사이즈를 줄여서 보내야 할 거 같은데요~ 해결해봐야겠네요!

(For test server side)
              Dim bytesFrom(clientSocket.ReceiveBufferSizeAs Byte

(For test client side)
             Dim inStream(clientSocket.ReceiveBufferSizeAs Byte

Test server/client files above (written in SharpDevelop 4.4)
https://drive.google.com/open?id=1KUANExxlHFmoZU6ZF6az4MsBlwHCX-41


아래 레퍼런스는 키사이트에서 이더넷 샘플 프로그램을 VBA로 만들어놨네요~ 에디터로 비교해보시면 닷넷이 얼마나 단순한지 깨달을 수 있더라고요~ ..

VBA sample program made by keysight (External reference)
https://www.keysight.com/main/editorial.jspx?cc=DE&lc=ger&ckey=1000001131:epsg:sud&nid=-11143.0.00&id=1000001131:epsg:sud

-----이하는 추억팔이입니다-----
5인용 빙고 동작

5인용 빙고 승리자 발생시

------
8년 전에 학기 과제로 C++로 소켓통신을 해야하는 게(주제는 5인용 빙고를 했었네요~ ㅎㅎ) 있어서 한 학기 내내 못해서 과제실패보고서를 썼던 순간이 기억나네요..
과제실패보고서를 쓰다가 하도 안되니 빡쳐서 방에서 미친듯이 소주나 퍼먹다가 밤 11시쯤에 갑자기 방법이 이해가 되어서 같은 조 친구한테 과제실패보고서 쓰지 말라고 하고 급하게 만들어서 발표했었는데요~ ㅎㅎ 그 때 마지막에 도와줬던 친구가 아직도 기억이 나네요. 발표할 때도 고맙다고 했는데 말이에요.
server-side에서 계속 loop를 돌려야하는데 main()에 반복문 없이 넣어놓고 왜 계속 꺼지지????? ㅋㅋ 했었는데요.. 지금 생각하니까 참 황당하지만 그 땐 전부 생소한 개념이었으니까.. 하고 자기방어를 해봅니다~ ㅋㅋ 또, 그때는 이걸 도대체 왜 배우는지 이해를 못했는데요.. 진로도 광전자엔지니어로 생각했으니까.. 다시 프로그래밍을 보겠나 했었는데 말이죠, 오늘 협력사 분들이랑 미팅할 때 CAN통신/LIN통신/MCU제어 등등 관련 주제로 이야기하다보니 어떻게든 쓰게 되는구나~ 라고 그 때 더 열심히 할 걸 생각이 든 하루였습니다~ ㅎ.ㅎ.. 학교 다닐 때는 전자장 해석 같은게 좋아서 딱딱한 문법 위주인 프로그래밍이 너무 힘들었는데.. 요샌 너무 재미있는거 같아요! ㅎㅎ

댓글

이 블로그의 인기 게시물

(Node.js) XLSX로 결과 출력하기 / 모듈 디자인 Exporting / Node.js modular design

(VBA) 009 - 닫힌 파일에서 데이터 읽어오기 (ExecuteExcel4Macro)

(Node.js) EUC-KR을 Cheerio - Iconv-lite로 불러올 때