안녕하세요! C# 소켓프로그래밍 관련해서 정말 도움이 절실합니다ㅠㅠ <span style="font-size:9pt;line-height:1.5;">눈앞이 캄캄해서 생각난 곳이 여기입니다ㅠㅠ</span> <div><br><div><div>현재, 일단 소켓프로그래밍을 한번도 해본적이 없어서 서버-클라이언트로 이루어진 채팅 프로그램 예제 공부중이구요. </div> <div>제가 만들어야 할 프로그램은 서버-클라이언트가 있습니다. 클라이언트에서 패킷메시지를 보내주면 서버에서 응답을 해서 다시 클라이언트로 전송해줘야 합니다. 이때 통신 프로토콜 설계서를 보고 패킷메시지를 날려야 합니다. </div> <div><br></div> <div>그냥 아예 여기에 대해서 무지합니다. 공부하고자 하니, 어디 도움 받을 곳이 여기 밖에 없습니다ㅠㅠㅠㅠ</div> <div><span style="font-size:9pt;line-height:1.5;">통신 프로토콜 설계서에 있는 걸 몇개 가져오면 아래와 같습니다. </span></div> <div><br></div> <div><b>통신 패킷</b></div> <div> <table style="border-collapse:collapse;border-left-style:solid;border-left-color:#000000;border-left-width:.28pt;border-bottom-style:solid;border-bottom-color:#000000;border-bottom-width:.28pt;border-right-style:solid;border-right-color:#000000;border-right-width:.28pt;"><tbody><tr><td style="width:76.3pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;">구분</span></p></td> <td style="width:67.82pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">STX</span></p></td> <td style="width:76.2pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;">데이터길이</span></p></td> <td style="width:64.88pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;">보내는 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">ID</span></p></td> <td style="width:62.05pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;">받는 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">ID</span></p></td> <td style="width:93.18pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;">데이터종류</span></p></td> <td style="width:118.65pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;">데이터</span></p></td> <td style="width:90.35pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">Check Sum</span></p></td> <td style="width:70.54pt;height:21.36pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">ETX</span></p></td></tr><tr><td rowspan="2" style="width:76.3pt;height:178.13pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;">크기<span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">(bytes)</span></p> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">(10 + n)</span></p></td> <td style="width:67.82pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">1</span></p></td> <td style="width:76.2pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">1</span></p></td> <td style="width:64.88pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">2</span></p></td> <td style="width:62.05pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">2</span></p></td> <td style="width:93.18pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">1</span></p></td> <td style="width:118.65pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">n</span></p></td> <td style="width:90.35pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">2</span></p></td> <td style="width:70.54pt;height:21.31pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">1</span></p></td></tr><tr><td style="width:67.82pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0x02</span></p></td> <td style="width:76.2pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">n+5</span></p> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">{</span>보내는 <span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">ID</span></p> <p style="text-align:center;">받는 <span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">ID</span></p> <p style="text-align:center;">데이터종류</p> <p style="text-align:center;">데이터<span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">(n)}</span></p></td> <td style="width:64.88pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">ID</span></p></td> <td style="width:62.05pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">ID</span></p></td> <td style="width:93.18pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">Command (0x10)</span></p> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">Data(0x11)</span></p> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">Error (0x12)</span></p></td> <td style="width:118.65pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;">세부명령<span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">|</span>추가데이터</p></td> <td style="width:90.35pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;">데이터길이</p> <p style="text-align:center;">부터 데이터까지 </p> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">2bytes </span>나눈 후의 합</p></td> <td style="width:70.54pt;height:156.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0x03</span></p></td></tr></tbody></table></div> <div>데이터 형식은 0x11 되어있습니다. 그다음 페이지에는 Command 정의(0x10)도 있구요. <span style="font-size:9pt;line-height:1.5;">클라이언트->서버 이렇게 하여 표가 하나 있습니다. </span></div> <div><span style="font-size:9pt;line-height:1.5;">표에서 하나 언급을 하면요. </span></div> <div><br></div> <div> <table style="border-collapse:collapse;border-left-style:solid;border-left-color:#000000;border-left-width:.28pt;border-bottom-style:solid;border-bottom-color:#000000;border-bottom-width:.28pt;border-right-style:solid;border-right-color:#000000;border-right-width:.28pt;"><tbody><tr><td rowspan="2" style="width:137.45pt;height:25.64pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;background:#ffffff;">명령어 종류</span></p></td> <td colspan="2" style="width:223.96pt;height:12.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;background:#ffffff;">데이터 영역</span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;background:#ffffff;">(6~)</span></p></td> <td rowspan="2" style="width:273.29pt;height:25.64pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;background:#ffffff;">설명</span></p></td> <td rowspan="2" style="width:106.32pt;height:25.64pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;background:#ffffff;">비고</span></p></td></tr><tr><td style="width:92.17pt;height:12.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;background:#ffffff;">세부 명령어코드</span></p></td> <td style="width:131.79pt;height:12.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);background:#d6d6d6;" valign="middle"> <p style="text-align:center;"><span style="font-weight:bold;background:#ffffff;">추가 데이터</span></p></td></tr><tr><td rowspan="2" style="width:137.45pt;height:47.3pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p><span style="font-weight:bold;">시간동기화 송신</span></p> <p><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">SET_TIME</span></p></td> <td style="width:92.17pt;height:28.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0x01</span></p></td> <td style="width:131.79pt;height:28.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p style="text-align:center;"><span>시간 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">| </span><span>시간차</span></p> <p style="text-align:center;"><span lang="en-us" style="font-family:'굴림체';"> </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">(7+1=8 bytes)</span></p></td> <td style="width:273.29pt;height:28.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p><span>메인 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">GUI</span><span>에서 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">PCU</span><span>와의 시간 동기화용으로 사용함</span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">.</span></p> <p><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">* </span><span>시간차 데이터가 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0</span><span>인 경우는 </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">RES_TIME </span><span>응답을 받음</span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">.</span></p></td> <td style="width:106.32pt;height:28.82pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p><span>수신 메시지</span></p> <p><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">RES_TIME</span></p></td></tr><tr><td colspan="4" style="width:603.57pt;height:18.48pt;padding:1.41pt 5.1pt;border:.28pt solid rgb(0,0,0);" valign="middle"> <p><span>패킷</span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">) 0x02 0x0D 0xFFFE 0xFFFF </span><u><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0x10</span></u><span lang="en-us" style="font-family:'굴림체';"> </span><u><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;font-weight:bold;">0x01</span></u><u><span lang="en-us" style="font-family:'굴림체';"> </span></u><u><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0x0102030405060708</span></u><span lang="en-us" style="font-family:'굴림체';"> </span><span lang="en-us" style="font-family:'굴림체';letter-spacing:0pt;">0x???? 0x03</span></p></td></tr></tbody></table></div> <div>이런식으로 되어있습니다.</div></div> <div><br></div> <div><b>질문1) STX 등은 인터넷을 찾아서 의미는 아는데, 밑에 있는 숫자는 무엇인가요? 저 숫자 다 더하니깐 10나오고 n 때문에 그래서 10+n인거 같은데 무얼 뜻하는지 설명 해주셨으면 좋겠습니다.</b></div> <div><b><br></b></div> <div><b>질문2) 패킷 ) 0x02 ~~ 이부분이 STX 데이터길이 이런 순으로 되어있는거 같은데 맞나요?? 이걸 어디에 써먹어야 하나요??</b></div></div> <div><b><br></b></div> <div><b>질문3) 이와 관련한 소켓프로그래밍 예시 코딩 있으면 가르쳐 주셨으면 좋겠습니다.ㅠㅠ 도대체 어떻게 코딩을 해야하나요??</b></div> <div><br></div> <div>이렇게 질문3개로 나눠서 올렸긴 한데, 지금 제 상태를 C로 표현하자면 헤더 선언하고, int main(void) { return 0;} 딱 이것만 쓰고 더이상 어찌 해야할지 모르는 상태입니다....<span style="font-size:9pt;line-height:1.5;">통신 프로토콜 설계서 라는걸 지금 처음 봅니다...주변에서 물어보면 책이나 인터넷 찾아보라고만 합니다....너무 막막합니다ㅠㅠ </span><span style="font-size:9pt;line-height:1.5;">도움좀 주셨음 좋겠습니다 ㅠㅠ</span></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.