기본 콘텐츠로 건너뛰기

(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제어 등등 관련 주제로 이야기하다보니 어떻게든 쓰게 되는구나~ 라고 그 때 더 열심히 할 걸 생각이 든 하루였습니다~ ㅎ.ㅎ.. 학교 다닐 때는 전자장 해석 같은게 좋아서 딱딱한 문법 위주인 프로그래밍이 너무 힘들었는데.. 요샌 너무 재미있는거 같아요! ㅎㅎ

댓글

이 블로그의 인기 게시물

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

#毎日育ちゃん可愛い大会 예시의 매크로 파일을 테스트 할 때는 저장된 폴더를 사용하실 폴더로 꼭 바꿔주세요! (pptx파일) pptx파일 (xlsx파일) 예제데이터파일   Macro파일 ★ 진행목적 : 왜 이걸 사용합니까 . 1) 행이나 열 , 또는 Sheet 과 같이 다른 특성을 가지는 1,2,3 차 데이터배열에 대한 처리 방법을 지금까지 설명드렸습니다 . 2) 그럼 이제 , 다른 파일에서 데이터를 읽어올 방법을 알아볼 필요가 있습니다 . 어째선가 회사의 데이터를 처리하다보면 , 주기적인 이름의 엑셀 파일 특정 Sheet, Cell 에 있는 경우가 많았습니다 . 3) 엑셀에서 이미 열려있는 파일의 참조는 ‘=‘ 을 사용하면 가능하지만 , 닫힌 파일은 데이터를 읽지 못합니다 . 4) 그래서 이를 처리하기 위해 VBA 의 ‘ExecuteExcel4Macro( 주소 )’ 를 사용합니다 ! ★ 다른 파일의 참조는 어떻게 합니까 ? 1) 열려 있는 다른 파일의 데이터를 읽는 방식은 ‘=‘ 을 입력하고 해당 Cell 을 클릭하면 됩니다 ! 2) 그러면 아래와 같이 (=‘ 파일이 있는 폴더 [ 파일명 ]Sheet 명 ’!Cell 주소 ) 의 형태로 기록 이 됩니다 . ★ 닫힌 파일에 대해서는 INDIRECT 는 사용이 되질 않습니다 ! 1) INDIRECT 로는 처리가 되질 않습니다 . 2) 어째선가 전에 사용하던 INDIRECT 를 사용하고 싶지만 , 사용이 되질 않습니다 . 검색을 해봐도 안된다는 답변만 있네요 ! 3) 파일이 하나 두 개라면 , 이전과 같이 ‘=‘ 를 쓰면 되겠지만 , 그러면 자동화를 통한 효율화가 불가능해지겠죠 ! 4) 그래서 이를 처리하기 위해 VBA 의 ‘ExecuteExcel4Macro( 주소 )’ 를 사용합니다 ! ★ ExecuteExcel4Macro 는 어떻게 사용합니까 ? 1) VBA 의 ExecuteExcel4Macro 란 매크로...

[Python] 크롤링 HTTP Forbidden 403 문제 해결

  코드에는 문제가 없는데 HTTP 403 Forbidden이 발생하길래.. 검색해보니까 서버사이드에서 저 같은 불법 크롤러를 거르는 메쏘드가 있는 모양입니다. 아래의 링크를 참고해서 해결했습니다 https://howtoworld.tistory.com/52 urllib에서 Request를 import 해줘야합니다. 1 2 3 4 def  hellenicshipping():     url  =  Request( "https://www.hellenicshippingnews.com/category/shipping-news/dry-bulk-market" ,headers = { 'User-Agent' :  'Mozilla/5.0' })     html  =  urlopen(url)     savefile  =   './hsn.txt' Colored by Color Scripter cs

(VBA) 004 - Object 이름으로 이미지 복사 붙여넣기

(VBA) 004- Object 이름으로 이미지 복사 붙여넣기 진행목적  :  왜 이걸 사용합니까 . → Object  이름을 사용해서 주기적 복사가 가능한 경우가 있습니다 .     ( 예  :  사진의 이름이  ‘ 사진  1’ ‘ 사진  2’…  로 되어있거나 , ‘Picture 1’, ‘Picture 2’…  로 됨 ) (설명자료는 여기) 설명자료 ( 예제파일은 여기 ) 예제파일 (VBA 진행에 대해) 이제 VBA 세션 자료를 필요할 때 보려고 이 블로그에 남기려고 해요. 앞선 001-003도 옮겨야겠습니다. 올해 내에 100가지 주제를 가지고 포스팅 할 수 있도록 할게요. ( 中谷 育 さんのイメージで に対して) 本当に可愛い中谷 育さんのイメージが 含まれています。 ありがとうございます。 何か問題があったら、教えてください。 直ちに処理します。