https://github.com/ghdrl95/CShapeWinFormNetwork

 

ghdrl95/CShapeWinFormNetwork

c# 윈폼을 활용한 네트워크 통신 예제. Contribute to ghdrl95/CShapeWinFormNetwork development by creating an account on GitHub.

github.com

c# 윈폼을 활용한 네트워크 통신 예제

 

  • Test : 웹캠 영상 불러오는 예제 및 TCP 통신 기반의 영상 송수신 서버 구현
  • Test_Client : TCP통신 기반의 영상 송수신 클라이언트 구현
  • udpMicStream : UDP통신 기반의 음성 데이터 송수신 프로그램 구현.
  • ScreenStreaming : 모니터 화면 캡쳐 기본. TCP 기반의 화면 스트리밍 서버 구현 및 클라이언트의 마우스 입력 데이터로 원격제어 기능 구현
  • ScreenStreaming_client : 화면 스트리밍을 수신받는 클라이언트. 스트리밍 화면을 마우스로 클릭시 서버에게 마우스 클릭 정보 전송

'프로그래밍 > C#' 카테고리의 다른 글

c#기반의 네트워크 통신 예제 소스 모음  (0) 2019.08.03
(C#) get, set 접근자  (0) 2016.07.09
(C#) Head First - 캡슐화 PartyPlaner  (0) 2016.07.09
(C#) Head First - 캡슐화  (0) 2016.07.09
(C#) head first - MessageBox 사용  (0) 2016.07.09

https://github.com/ghdrl95/CShapeNetwork

 

ghdrl95/CShapeNetwork

Contribute to ghdrl95/CShapeNetwork development by creating an account on GitHub.

github.com

C# 네트워크 통신 소스 모음. 

TCP는 서버와 클라이언트 구조를 띄고 있고, UDP는 송신자와 수신자 구조로 예제소스를 구성함.

TCP와 UDP 항목은 Server파일과 Client파일을 한쌍으로 확인할것

ex) TCP_1 : TCP_Server_1.cs + TCP_Client_1.cs 소스 확인

 

Data : 데이터 통신용 클래스 저장 파일. 네임스페이스와 클래스이름이 동일해야 객체전달이 가능함.
TCP_1 : c# TCP통신 기본 예제. byte데이터 송수신
TCP_2 : c# TCP통신 예제. Serialize와 Deserialize를 통한 객체 송수신
TCP_3 : c# TCP통신 기반 가위바위보 게임. 하나의 서버에 두개의 클라이언트가 접속해 가위바위보 게임을 진행
TCP_4 : c# TCP통신 기반 파일 송수신예제
TCP_5 : c# TCP통신 기반 심플 클라우드. 서버의 하드디스크 공간에 파일 업로드/다운로드. 서버의 실행파일이 있는 위치에 files폴더가 있어야함
TCP_6 : 멀티쓰레드 기반 1 Room 멀티채팅 서버/클라이언트
UDP_1 : c# UDP통신 기본 예제. 바이트단위 데이터 송수신
UDP_2 : c# UDP통신 기본 예제. MemoryStream으로 Serialize, Deserialize 기능 사용하기
UDP_3 : c# UDP통신으로 송신자의 IP/PORT 전달 예제
UDP_4 : c# UDP통신 브로드캐스트 예제.
UDP_5 : c# UDP통신 멀티캐스트 예제
UDP_6 : c# UDP통신 멀티캐스트와 멀티스레드 기반의 채팅프로그램
Thread_1 : c# 멀티쓰레드 사용법 예제
Thread_2 : c# 경마프로그램
Thread_3 : c# NAudio 라이브러리 기반 음악 재생 프로그램

'프로그래밍 > C#' 카테고리의 다른 글

c#기반의 윈폼 + 네트워크 예제  (0) 2019.08.03
(C#) get, set 접근자  (0) 2016.07.09
(C#) Head First - 캡슐화 PartyPlaner  (0) 2016.07.09
(C#) Head First - 캡슐화  (0) 2016.07.09
(C#) head first - MessageBox 사용  (0) 2016.07.09

프로젝트 소스 링크

https://github.com/ghdrl95/voied_chat

 

ghdrl95/voied_chat

Contribute to ghdrl95/voied_chat development by creating an account on GitHub.

github.com

환경 구축

설치환경

설치버전 

python 

3.6 

pyaudio

0.2.11

마이크와 스피커

USB 장치로 연결하는 마이크 / Audio 잭에 연결한 스피커

기능 설명

  • 서버 컴퓨터와 클라이언트 컴퓨터 간의 음성채팅 프로그램
  • 서버 컴퓨터와 클라이언트 컴퓨터에 마이크와 스피커가 연결되있어야함
  • 서버와 클라이언트는 pyaudio 라이브러리를 통해 마이크의 입력 데이터와 스피커로 데이터 출력을 할 수 있음
  • 서버와 클라이언트는 마이크의 입력 데이터를 TCP 통신으로 송수신함

 

파일 설명

mic_info.py : 마이크와 스피커 장치의 인덱스를 알 수 있는 프로그램. 컴퓨터에 마이크와 스피커 장치가 연결된 상태에서 해당 파일을 실행해 장치의 인덱스를 추출

chat_server.py : TCP 통신의 서버역할 코드. 프로그램 실행 전 마이크/스피어 장치 인덱스와 컴퓨터의 IP를 수정해야함

chat_client.py : TCP 통신의 클라이언트 역할 코드. 프로그램 실행 전 컴퓨터의 마이크/스피어 장치 인덱스 및 서버 컴퓨터의 IP 주소로 수정해야함

'프로그래밍 > python' 카테고리의 다른 글

파이썬으로 웹서버 만들기 (django 모듈사용)  (0) 2019.05.27

https://github.com/ghdrl95/pythondjango

 

파이썬 기반의 웹서버 구축 방법 중 django 모듈을 활용해 웹서버를 만드는 방법에 대해 주석과 프로젝트 소스입니다.

 

환경구축은 아래 표와 같이 진행했습니다

설치파일 설치버전
python 3.6
django 모듈 2.1
이클립스 oxygen
pydev 플러그인 이클립스 실행 후 마켓플레이스에서 다운로드

폴더 별 추가된 기능

/project1 : 프로젝트 생성 후 bookmark 어플리케이션 생성모델템플릿 구조를 확인

/project2 : django튜토리얼 어플리케이션을 개발(vote 어플리케이션)

/project3 : vote어플리케이션 확장 (form 기반의 모델 객체 추가/수정/삭제)

/project4 : customlogin 어플리케이션 생성 (django의 회원관리 어플리케이션을 바탕으로 회원가입로그인로그아웃 기능 추가), 템플릿 확장기능으로 효율적으로 html 관리

/project5 : blog 어플리케이션(게시판 형태의 어플리케이션파일 및 이미지 업로드 기능을 사용할 수 있도록 모델 정의)social-auth-app-django 모듈 기반의 소셜로그인 기능 구현

/project6 : blog 어플리케이션의 템플릿검색 기능 추가




'프로그래밍 > python' 카테고리의 다른 글

파이썬으로 음성채팅 프로그램 만들기  (2) 2019.05.27

실험 기간 : 3개월(2018/08/27 시작)

실험 환경 : 이베스트투자증권 모의투자, C#, 룰베이스 투자(매수,매도 조건으로 컴퓨터가 사고팜)

시작 잔고 : 5천만원




계좌잔고


종목명구분보유수량매도가능평균단가현재가매입금액평가금액평가손익수익률투자비중수수료제세금
동국제강 40409,2399,130369,598365,200-4,398-1.180.732,5711,094
국동 5205203,8253,8401,989,0601,996,8007,7400.383.9013,9495,990
NI스틸 9609603,0532,9002,931,7252,784,000-147,725-5.035.7520,0058,352
문배철강 3303304,2614,2601,406,3501,405,800-550-0.032.769,8424,216
영흥철강 1,5101,5101,3131,2751,983,6501,925,250-58,400-2.943.8913,6805,774
이스타코 1,1101,110899888998,390985,680-12,710-1.271.966,9432,956
부국철강 6206203,0472,9951,889,4501,856,900-32,550-1.723.7113,1125,570
서울전자통신 2,9002,9001,5191,4254,405,2704,132,500-272,770-6.198.6529,88112,397
세종공업 2632637,8987,8902,077,3702,075,070-2,300-0.114.0814,5326,224
케이엘넷 2702703,5753,385965,250913,950-51,300-5.311.896,5762,741
한국전자인증 2602605,7105,7001,484,6001,482,000-2,600-0.172.9110,3834,446
서울반도체 13013018,90018,7002,457,0002,431,000-26,000-1.054.8217,1077,293
쏠리드 2002004,8454,695969,000939,000-30,000-3.091.906,6772,817
에스피지 22022011,35010,8002,497,0002,376,000-121,000-4.844.9017,0557,128
바이오니아 20020012,35012,0502,470,0002,410,000-60,000-2.424.8517,0807,230
손오공 3203203,0592,960979,140947,200-31,940-3.261.926,7412,841
바이오톡스텍 18018013,24913,2002,384,9502,376,000-8,950-0.374.6816,6637,128
메타랩스 2302306,5206,5201,499,6001,499,60000.002.9410,4964,498
디에이치피코리아 60060014,82514,6508,895,0008,790,000-105,000-1.1817.4661,89726,370
메가엠디 3203203,1553,1301,009,6001,001,600-8,000-0.791.987,0383,004
비아트론 18018013,35013,0502,403,0002,349,000-54,000-2.244.7216,6317,047
헝셩그룹 2,6502,6501,8401,7104,877,5504,531,500-346,050-7.099.5732,93113,594








9/5 일차 실현손익


종목코드종목명추정실현손익수익률매도수량매도단가매도금액수수료제세금매입단가매수금액수수료
004060SG세계물산73,8877.361,1709271,084,7823,7963,2488551,000,3503,501
006920모헨즈69,8304.722306,7801,559,4205,4574,6736,4101,474,3005,160





실험 기간 : 3개월(2018/08/27 시작)


실험 환경 : 이베스트투자증권 모의투자, C#, 룰베이스 투자(매수,매도 조건으로 컴퓨터가 사고팜)


시작 잔고 : 5천만원



계좌잔고

종목명구분보유수량매도가능평균단가현재가매입금액평가금액평가손익수익률투자비중수수료제세금
동국제강 40409,2399,210369,598368,400-1,198-0.320.752,5821,104
SG세계물산 1,1701,1708558241,000,350964,080-36,270-3.622.026,8752,892
국동 5205203,8253,7351,989,0601,942,200-46,860-2.354.0213,7585,826
모헨즈 2302306,4106,3501,474,3001,460,500-13,800-0.932.9810,2714,381
NI스틸 9609603,0532,9352,931,7252,817,600-114,125-3.895.9320,1228,452
문배철강 3303304,2614,2701,406,3501,409,1002,7500.192.849,8534,226
영흥철강 1,5101,5101,3131,2701,983,6501,917,700-65,950-3.324.0113,6535,752
이스타코 1,1101,110899900998,390999,0006100.062.026,9902,996
부국철강 6206203,0473,0601,889,4501,897,2007,7500.413.8213,2535,690
서울전자통신 2,9002,9001,5191,4954,405,2704,335,500-69,770-1.588.9130,59213,006
세종공업 26307,8988,0602,077,3702,119,78042,4102.044.2014,6896,358
케이엘넷 2702703,5753,370965,250909,900-55,350-5.731.956,5622,729
한국전자인증 2602605,7105,8501,484,6001,521,00036,4002.453.0010,5194,563
쏠리드 2002004,8454,760969,000952,000-17,000-1.751.966,7232,856
에스피지 22022011,35011,1502,497,0002,453,000-44,000-1.765.0517,3247,359
바이오니아 20020012,35012,4502,470,0002,490,00020,0000.804.9917,3607,470
손오공 3203203,0592,975979,140952,000-27,140-2.771.986,7582,856
바이오톡스텍 18018013,24913,4502,384,9502,421,00036,0501.514.8216,8207,263
디에이치피코리아 60060014,82514,8008,895,0008,880,000-15,000-0.1617.9862,21226,640
메가엠디 3203203,1553,1701,009,6001,014,4004,8000.472.047,0833,043
비아트론 18018013,35013,3002,403,0002,394,000-9,000-0.374.8616,7897,182
헝셩그룹 2,6502,6501,8401,7604,877,5504,664,000-213,550-4.379.8633,39513,992









9/3일차

종목코드종목명추정실현손익수익률매도수량매도단가매도금액수수료제세금매입단가매수금액수수료
008420문배철강69,6424.933304,5161,490,6005,2174,4684,2611,406,3514,922
014190원익큐브29,0655.991303,985518,0501,8131,5543,722483,9251,693
097800윈팩38,3957.72901,862540,2501,8901,6181,712496,6091,738
123100원익테라세미콘57,9325.446018,8501,131,0003,9583,39317,7001,062,0003,717


9/4일차

종목코드종목명추정실현손익수익률매도수량매도단가매도금액수수료제세금매입단가매수금액수수료
014190원익큐브36,3697.491304,041525,4001,8381,5753,722483,9251,693
027580상보38,5612.018602,2901,969,4006,8925,9082,2221,911,3506,689
033530세종공업29,8081.023678,0602,958,02010,3538,8747,8982,898,84010,145
078650코렌29,3362.927201,4451,040,4003,6413,1211,3901,000,8003,502
123100원익테라세미콘86,8656.997019,1271,338,9004,6854,01417,7001,239,0004,336
126870뉴로스37,9982.62107,1801,507,8005,2774,5236,9281,454,9105,092











라즈베리파이 vncserver 설치

sudo apt-get install tightvncserver

vncserver 실행

vncserver

비밀번호 설정 -> 처음 설정시 1이 뜨는데 VNCViewer에서 접속할때 사용됨



접속할 곳(PC)에서 VNCViewer 설치

https://www.realvnc.com/download/viewer/


라즈베리파이 IP:번호 입력후 Connect

설정한 비밀번호 입력




정상적으로 접속이되면 라즈베리파이의 GUI화면이 뜸

해상도나 전체화면 옵션을 사용하고 싶을 경우 화면 가운데 상단의 메뉴를 이용하면 됨


이방법을 사용할 경우 라즈베리파이를 실행할 때마다 vncserver를 실행해야함








외부라이브러리까지 묶어서 export하기 위해선 FatJar라는 플러그인을 설치해야함


Help/Install New Software 클릭

Work With에 http://kurucz-grafika.de/fatjar 입력후 엔터치면 아래 그림과 같이 설치할 수 있는 게 뜸.

열심히 Next 누르면 설치 준비하는데 라즈베리파이3 기준 굉장히 오래걸림...

다음화면으로 넘어가면 동의하기 누르고 피니쉬를 누르면 설치를 함.(설치또한 오래걸림)



설치가 끝나고 File -> export 를 선택하고 other/Fat Jar Exporter 를 선택 후 Next



Export할 프로젝트 선택




Jar-Name : Export 된 jar파일을 어디에 어떤이름으로 생성할지 경로와 파일이름 지정

Main-Class : Main 문이 있는 클래스 지정



프로젝트에 포함할 외부라이브러리 항목 체크후 Finish 하면 jar파일을 만들어줌




명령 프롬프트, 터미널에서 jar 파일을 실행하고 싶을 경우 

java -jar jar파일이름 입력하면 실행이 됨.


실험 기간 : 3개월(2018/08/27 시작)

실험 환경 : 이베스트투자증권 모의투자, C#, 룰베이스 투자(매수,매도 조건으로 컴퓨터가 사고팜)

시작 잔고 : 5천만원




8/31 계좌 잔고

종목명보유수량매도가능평균단가현재가매입금액평가금액평가손익수익률종목코드수수료제세금
동국제강40409,2399,360369,598374,4004,8021.290012302,6031,122
국동5205203,8253,7501,989,0601,950,000-39,060-1.9600532013,7865,850
NI스틸9609603,0533,0152,931,7252,894,400-37,325-1.2700826020,3918,682
문배철강6606604,2614,2402,812,7002,798,400-14,300-0.5000842019,6388,394
영흥철강1,5101,5101,3131,2701,983,6501,917,700-65,950-3.3201216013,6535,752
원익큐브2602603,7223,850967,8491,001,00033,1513.420141906,8903,003
부국철강6206203,0473,0801,889,4501,909,60020,1501.0602694013,2965,728
서울전자통신2,9002,9001,5191,5104,405,2704,379,000-26,270-0.5902704030,74413,137
상보8608602,2222,2551,911,3501,939,30027,9501.4602758013,4765,817
세종공업6306307,8987,9204,976,2104,989,60013,3900.2603353034,87914,968
케이엘넷2702703,5753,480965,250939,600-25,650-2.650394206,6662,818
쏠리드2002004,8454,710969,000942,000-27,000-2.780508906,6882,826
바이오니아20020012,35012,3002,470,0002,460,000-10,000-0.4006455017,2557,380
손오공3203203,0592,990979,140956,800-22,340-2.280669106,7742,870
바이오톡스텍18018013,24913,0502,384,9502,349,000-35,950-1.5008604016,5687,047
윈팩2902901,7121,795496,607520,55023,9434.820978003,5591,561
원익테라세미콘13013017,70018,5502,301,0002,411,500110,5004.8012310016,4937,234
디에이치피코리아15015015,65015,2502,347,5002,287,500-60,000-2.5513103016,2226,862
메가엠디3203203,1553,2551,009,6001,041,60032,0003.161337507,1783,124
비아트론18018013,35013,5002,403,0002,430,00027,0001.1214100016,9157,290
헝셩그룹2,6502,6501,8401,7554,877,5504,650,750-226,800-4.6490027033,348

13,952




8/31 실현손익

종목명추정실현손익수익률매도수량매도단가매도금액수수료제세금매입단가매수금액수수료
원익큐브54,2555.592603,9701,032,2003,6123,0953,722967,8513,387
윈팩120,9408.098701,8691,626,5505,6924,8761,7121,489,8285,214
원익테라세미콘125,5205.4413018,8502,450,5008,5767,35117,7002,301,0008,053
씨케이에이치85,1868.521,7806131,092,5673,8233,270560996,8003,488





분석

이번주부터 모의투자를 기반으로 시뮬레이션을 했기 때문에 물려있는 자금이 없는 상태였다.

점점 보유 주식수가 늘어가고있고 금요일이 되자 4500만원가량의 주식을 보유하고 있다.

이후에도 돈의 순환 유무를 지켜봐야 될 것 같다.





라즈베리파이 usb포트 - 아두이노 TX RX 시리얼 연결 사진

usb to serial로 사용할 수 있는 모듈을 통해 아두이노의 TX, RX, 5V, GND에 연결

아두이노에 프로그램을 업로드할 때 컴퓨터와 TX,RX 통신을 하므로, 소스 업로드를 마치고 나서 연결해야 정상적으로 소스가 업로드 되니 주의



usb를 꽂은 뒤 터미널에서 'dmesg|tail' 명령어로 현재 연결된 USB포트의 이름을 알아내기




라즈베리파이(wiringPi 라이브러리 사용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<string.h>
#include<errno.h>
 
#include<wiringSerial.h>
 
int main(){
    int fd;
    if((fd=serialOpen("/dev/ttyUSB0",115200))<0){
        fprintf(stderr,"Unable to open serial device: %s\n", strerror(errno));
        return 1;
    }
    for(;;){
        putchar(serialGetchar(fd));
        fflush(stdout);
    }
}
 
cs

9~12줄

터미널에서 연결된 디바이스 정보를 serialOpen함수에 문자열로 입력, 2번째 매개변수는 serial 통신의 스피드를 입력.

(아두이노 쪽 통신속도와 일치해야 데이터를 정확히 받을 수 있음)

정상적으로 시리얼 접속이 안될경우 장치 이름이 동일한지 확인해야함

13~16줄

아두이노에서 보낸 데이터를 결과창에 출력

char serialGetchar(int id) : 연결된 시리얼 장치로부터 문자를 반환받는 함수

fflush() : 버퍼를 비우는 함수



아두이노

1
2
3
4
5
6
7
8
9
void setup(){  
  Serial.begin(115200);
 
void loop(){
  Serial.println("Hello World");
  delay(1000);
}
 
cs

프로그램이 실행될때 시리얼 연결을 하고 1초마다 Hello World 문자열을 전송하는 소스




+ Recent posts