(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.ReceiveBufferSize) As Byte
(For test client side)
Dim inStream(clientSocket.ReceiveBufferSize) As 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
-----이하는 추억팔이입니다-----
------
8년 전에 학기 과제로 C++로 소켓통신을 해야하는 게(주제는 5인용 빙고를 했었네요~ ㅎㅎ) 있어서 한 학기 내내 못해서 과제실패보고서를 썼던 순간이 기억나네요..
과제실패보고서를 쓰다가 하도 안되니 빡쳐서 방에서 미친듯이 소주나 퍼먹다가 밤 11시쯤에 갑자기 방법이 이해가 되어서 같은 조 친구한테 과제실패보고서 쓰지 말라고 하고 급하게 만들어서 발표했었는데요~ ㅎㅎ 그 때 마지막에 도와줬던 친구가 아직도 기억이 나네요. 발표할 때도 고맙다고 했는데 말이에요.
server-side에서 계속 loop를 돌려야하는데 main()에 반복문 없이 넣어놓고 왜 계속 꺼지지????? ㅋㅋ 했었는데요.. 지금 생각하니까 참 황당하지만 그 땐 전부 생소한 개념이었으니까.. 하고 자기방어를 해봅니다~ ㅋㅋ 또, 그때는 이걸 도대체 왜 배우는지 이해를 못했는데요.. 진로도 광전자엔지니어로 생각했으니까.. 다시 프로그래밍을 보겠나 했었는데 말이죠, 오늘 협력사 분들이랑 미팅할 때 CAN통신/LIN통신/MCU제어 등등 관련 주제로 이야기하다보니 어떻게든 쓰게 되는구나~ 라고 그 때 더 열심히 할 걸 생각이 든 하루였습니다~ ㅎ.ㅎ.. 학교 다닐 때는 전자장 해석 같은게 좋아서 딱딱한 문법 위주인 프로그래밍이 너무 힘들었는데.. 요샌 너무 재미있는거 같아요! ㅎㅎ
사내에서 쓰는 장비가 직렬통신이 안되는게 있고, Active X로 동작하는 친구들이 있길래 요새 트렌드인 64비트 환경에서는 먹통인게 너무 많더라고요..
그래서 개선된 프로그램 제작해서 배포하려고 찾아보니 VB.NET이라는 언어로 이더넷 / 직렬통신이 가능하네요~ 역시 마소구글형님들은 대단한거 같아요~~
dll을 로드해서 구현하던 VBA 방식을 베껴 쓰다가 python과 같이 단순히 Import System.Net.Sockets를 사용하는 걸 보고 정말 놀랐네요;;; 지금까지 전 뭘한걸까요~~
여튼 장비랑 통신을 해야해서 자료를 찾다보니 위의 예제로 실행하면 가능할 것 같습니다.
위의 예제에는 송수신 버퍼사이즈가 10024로 되어있는데, 실행하면 소켓의 송수신 버퍼사이즈가 65536으로 나와서 에러가 뜨더라고요~ 그래서 바이트 버퍼 배열의 사이즈를 아래와 같이 소켓 버퍼 사이즈로 바꾸니까 되더라고요~ 이유는 모르겠습니다.. 공부를 더 해봐야겠네요.. 역시 근본없는 넘이라 제약이 많네요~ ㅋㅋ 왠지 버퍼사이즈를 줄여서 보내야 할 거 같은데요~ 해결해봐야겠네요!
(For test server side)
Dim bytesFrom(clientSocket.ReceiveBufferSize) As Byte
(For test client side)
Dim inStream(clientSocket.ReceiveBufferSize) As 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제어 등등 관련 주제로 이야기하다보니 어떻게든 쓰게 되는구나~ 라고 그 때 더 열심히 할 걸 생각이 든 하루였습니다~ ㅎ.ㅎ.. 학교 다닐 때는 전자장 해석 같은게 좋아서 딱딱한 문법 위주인 프로그래밍이 너무 힘들었는데.. 요샌 너무 재미있는거 같아요! ㅎㅎ
댓글
댓글 쓰기