Go เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‰เชฆเซเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชตเชฟเช•เชพเชธ. เชญเชพเช— 1

เชšเชพเชฐ เชฎเชนเชฟเชจเชพเชฅเซ€ เชนเซเช‚ "เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชธเชฐเช•เชพเชฐเซ€ เช…เชจเซ‡ เช”เชฆเซเชฏเซ‹เช—เชฟเช• เช•เซเชทเซ‡เชคเซเชฐเซ‹เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชถเชจ เช…เชจเซ‡ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชŸเซ‚เชฒเซเชธเชจเซ‹ เชตเชฟเช•เชพเชธ" เชจเชพเชฎเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚.
เชนเชตเซ‡ เชนเซเช‚ เชคเชฎเชจเซ‡ เชœเชฃเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ เชฎเซ‡เช‚ เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เช•เชฐเซเชฏเซ‹, เช…เชจเซ‡ เชนเชตเซ‡ เชนเซเช‚ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‹เชกเชจเซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เช•เชฐเซ€เชถ.

Go เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‰เชฆเซเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชตเชฟเช•เชพเชธ. เชญเชพเช— 1

เชฒเซ‡เช–เซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เช† เชชเชนเซ‡เชฒเซ‹ เชฒเซ‡เช– เช›เซ‡. เช…เชนเซ€เช‚ เชนเซเช‚ เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซเช‚ เช›เซเช‚. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชฐเซ€เชกเชฐ เช† เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชคเชคเซเชตเซ‹เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชตเชฐเซเชเชจ เชชเชฃ เชฒเช–เซ€ เชถเช•เซ‡ เช›เซ‡.

เช…เชจเซ‡ เช…เชนเซ€เช‚ เชฌเซ€เชœเซ‹ เชญเชพเช— เช›เซ‡ โ€” เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เช…เชจเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เชตเชฟเชถเซ‡, เชคเซ‡เชฎเชœ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชคเชพ เชชเซ‡เช•เซ‡เชœ เชตเชฟเชถเซ‡.

เช—เชฏเชพ เชตเชฐเซเชทเซ‡, เชกเชฟเชœเชฟเชŸเชฒ เชฌเซเชฐเซ‡เช•เชฅเซเชฐเซ เชนเซ‡เช•เชพเชฅเซ‹เชจเชฎเชพเช‚, เชคเซ‡เช“ เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸเซ‡เชก เชฒเซ‡เชœเชฐ เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‰เชฆเซเชฏเซ‹เช— เช…เชจเซ‡ เชกเชฟเชœเชฟเชŸเชฒ เช…เชฐเซเชฅเชคเช‚เชคเซเชฐ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชฒเชˆเชจเซ‡ เช†เชตเซเชฏเชพ เชนเชคเชพ; เช‡เชจเซ‹เชตเซ‡เชถเชจ เช†เชธเชฟเชธเซเชŸเชจเซเชธ เชซเช‚เชก เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เช—เซเชฐเชพเชจเซเชŸ เชชเชฃ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ (เชฎเชพเชฐเซ‡ เช…เชฒเช—เชฅเซ€ เชฒเช–เชตเซเช‚ เชœเซ‹เชˆเช. เช…เชจเซเชฆเชพเชจ เชตเชฟเชถเซ‡ เชฒเซ‡เช–, เชœเซ‡เช“ เชนเชฎเชฃเชพเช‚ เชœ เชธเซเชŸเชพเชฐเซเชŸเช…เชช เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ ), เช…เชจเซ‡ เชนเชตเซ‡ เช•เซเชฐเชฎเชฎเชพเช‚.

เชตเชฟเช•เชพเชธ เช—เซ‹ เชญเชพเชทเชพเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชœเซ‡เชฎเชพเช‚ เชฌเซเชฒเซ‹เช•เซเชธ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชฒเซ‡เชตเชฒเชกเซ€เชฌเซ€ เช›เซ‡.
เชฎเซเช–เซเชฏ เชญเชพเช—เซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช›เซ‡, เชธเชฐเซเชตเชฐ (เชœเซ‡ TCP เช…เชจเซ‡ WebSocket เชšเชฒเชพเชตเซ‡ เช›เซ‡ - เชชเซเชฐเชฅเชฎ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฌเซ€เชœเซ‹ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช…เชจเซ‡ JavaScript เชชเชฐเชฅเซ€ เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡.

เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเซ‹ เช›เซ‡ เชคเซ‡เชฎ, เช† เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชธเชชเซเชฒเชพเชฏเชฐเซเชธ เช…เชจเซ‡ เช—เซเชฐเชพเชนเช•เซ‹ เชตเชšเซเชšเซ‡ เช…เชฅเชตเชพ เชฌเช‚เชจเซ‡ เชเช• เชตเซเชฏเช•เซเชคเชฟเชฎเชพเช‚ เช‰เชคเซเชชเชพเชฆเชจเซ‹เชจเชพ เชตเชฟเชจเชฟเชฎเชฏเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช…เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เช† เชฒเซ‹เช•เซ‹เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเชตเชพเชจเซ€ เช•เซ‹เชˆ เช‰เชคเชพเชตเชณ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เช•เชพเชฐเซเชฏ เชซเช•เซเชค เชฌเชฟเชฒเซเชŸ-เช‡เชจ เช•เซ‡เชฒเซเช•เซเชฏเซเชฒเซ‡เชŸเชฐ เชธเชพเชฅเซ‡ "เชšเซ‡เช•เชฌเซเช•" เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชเช• เชธเชฟเชธเซเชŸเชฎ เช•เซ‡ เชœเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชœเซ€เชตเชจ เชšเช•เซเชฐ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช‰เชฆเซเชญเชตเชคเชพ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชจเชฟเชฏเชฎเชฟเชค เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชฌเชพเชฏเชŸเซ‡เช•เซ‹เชก เช•เซ‡ เชœเซ‡ เช† เชฌเชพเชฌเชค เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชธเชพเชฅเซ‡ เชฐเซ‚เชขเชฟเช—เชค เช›เซ‡, เชคเซ‡ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเชพ เช‡เชจเชชเซเชŸเซเชธ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡ (เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชชเซ‹เชคเซ‡ เชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชฒเซ‡เชตเชฒเชกเซ€เชฌเซ€เชฎเชพเช‚เชจเชพ เชฌเซเชฒเซ‹เช•เซเชธ GOB เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชชเซเชฐเซ€-เชเชจเช•เซ‹เชกเซ‡เชก เชนเซ‹เชฏ เช›เซ‡). เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ (เช‰เชฐเซเชซ เชจเซ‹เชก) เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เช.

เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชœเชŸเชฟเชฒ เชจเชฅเซ€, เชคเซ‡เชจเซ‹ เช†เช–เซ‹ เชฎเซเชฆเซเชฆเซ‹ เช…เชฎเซเช• เชกเซ‡เชŸเชพ เชฒเซ‹เชก เช•เชฐเชตเชพเชจเชพ เชฎเซ‹เชก เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฌเซเชฒเซ‹เช• เช…เชฅเชตเชพ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ, เช–เชพเชธ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเชฎเชพเช‚, เช…เชจเซ‡ เชคเซ‡ เช‡เชจเซเชตเซ‡เชจเซเชŸเชฐเซ€เชจเซ€ เช†เชชเชฒเซ‡ เชฎเชพเชŸเซ‡ เชชเชฃ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชœเซ‡เชฅเซ€ เชจเซ‹เชกเชจเซ‡ เช–เชฌเชฐ เชชเชกเซ‡ เช•เซ‡ เชคเซ‡ เช•เซ‹เชฃ เช›เซ‡. เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเซเชฏเชตเชธเชพเชฏ เช•เชฐเซ‡ เช›เซ‡ (เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจ เชธเชคเซเชฐ เชฎเชพเชŸเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช—เชพเช‚เช เซ‹เชจเซ‡ "เชชเชกเซ‹เชถเซ€" เชชเชฃ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชจเซ‹ IP เชœเชพเชฃเซ€เชคเซ‹ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‹ เชธเซเชŸเซ‡เชŸ เชกเซ‡เชŸเชพ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡).

เช—เซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซเชธเชจเซ€ เชธเชฎเชœเชฎเชพเช‚ เชซเซ‹เชฒเซเชกเชฐเซเชธ (เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช เชœเซ‡เชจเซ‡ Linux เช•เชนเซ‡ เช›เซ‡)เชจเซ‡ เชชเซ‡เช•เซ‡เชœ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เช† เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ Go เช•เซ‹เชก เชธเชพเชฅเซ‡ เชฆเชฐเซ‡เช• เชซเชพเช‡เชฒเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชคเซ‡เช“ เชชเซ‡เช•เซ‡เชœ เชซเซ‹เชฒเซเชกเชฐ_เชจเชพเชฎ_where_this_file เชธเซเชฅเชฟเชค เช›เซ‡ เชฒเช–เซ‡ เช›เซ‡. เชจเชนเชฟเช‚เชคเชฐ, เชคเชฎเซ‡ เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซ‡ เชชเซ‡เช•เซ‡เชœ เชซเซ€เชก เช•เชฐเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚. เช เซ€เช• เช›เซ‡, เชœเซ‡เช“ เช† เชญเชพเชทเชพ เชœเชพเชฃเซ‡ เช›เซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เช† เช•เซ‹เชˆ เชฐเชนเชธเซเชฏ เชจเชฅเซ€. เช† เชชเซ‡เช•เซ‡เชœเซ‹ เช›เซ‡:

  • เชจเซ‡เชŸเชตเชฐเซเช• เชธเช‚เชšเชพเชฐ (เชธเชฐเซเชตเชฐ, เช•เซเชฒเชพเชฏเช‚เชŸ, เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ)
  • เชธเช‚เช—เซเชฐเชนเชฟเชค เช…เชจเซ‡ เชชเซเชฐเชธเชพเชฐเชฟเชค เชกเซ‡เชŸเชพเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ (เชฌเซเชฒเซ‹เช•, เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ)
  • เชกเซ‡เชŸเชพเชฌเซ‡เช (เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ)
  • เชธเชฐเซเชตเชธเช‚เชฎเชคเชฟ
  • เชธเซเชŸเซ‡เช•เซเชก เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ (xvm)
  • เชธเชนเชพเชฏเช• (เช•เซเชฐเชฟเชชเซเชŸเซ‹, เชชเซเชฐเช•เชพเชฐเซ‹) เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เชเชŸเชฒเซเช‚ เชœ เช›เซ‡.

เช…เชนเซ€เช‚ เช—เซ€เชฅเชฌเชจเซ€ เชฒเชฟเช‚เช• เช›เซ‡

เช† เชเช• เชถเซˆเช•เซเชทเชฃเชฟเช• เชธเช‚เชธเซเช•เชฐเชฃ เช›เซ‡, เชคเซ‡เชฎเชพเช‚ เช†เช‚เชคเชฐ-เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เช˜เชŸเช•เซ‹เชจเซ‹ เช…เชญเชพเชต เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชพเชณเช–เซเช‚ เชคเซ‡เชจเชพ เชชเชฐ เชตเชฟเช•เชพเชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชธเซ‚เชšเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เช‚เชˆเชชเชฃ เชนเซ‹เชฏ, เชคเซ‹ เชฎเชจเซ‡ เชตเชงเซ เชตเชฟเช•เชพเชธเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชจเช‚เชฆ เชฅเชถเซ‡. เช…เชจเซ‡ เชนเชตเซ‡ เชธเชฐเซเชตเชฐเชจเซ€ เชธเชฎเชœเซ‚เชคเซ€ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ.

เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพ เชธเชฐเซเชตเชฐ เชœเซ‹เชˆเช.

เชธเชฐเซเชตเชฐ เชธเชฌเชฐเซ‚เชŸเชฟเชจ เชกเซ‡เชŸเชพ เชธเชฐเซเชตเชฐ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ TCP เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡.

เชฐเซ‚เชŸเชฟเชจ เชจเซ€เชšเซ‡เชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡: เชธเชฐเซเชตเชฐ, เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ, เชชเซเชฐเช•เชพเชฐเซ‹. เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เชœ tcp_server.go เชฎเชพเชนเชฟเชคเซ€ เชฎเชพเชณเช–เซเช‚ เชธเชฎเชพเชตเซ‡ เช›เซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡.

type Serve struct {
	Port string
	BufSize int
	ST *types.Settings
}

เชคเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เชธเซเชตเซ€เช•เชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡:

  • เชจเซ‡เชŸเชตเชฐเซเช• เชชเซ‹เชฐเซเชŸ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเซ€ เช†เชช-เชฒเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡
  • JSON เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชธเชฐเซเชตเชฐ เช—เซ‹เช เชตเชฃเซ€ เชซเชพเช‡เชฒ
  • เชกเซ€เชฌเช— เชฎเซ‹เชก (เช–เชพเชจเช—เซ€ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ) เชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชซเซเชฒเซ‡เช— เช•เชฐเซ‹

เชชเซเชฐเช—เชคเชฟ:

  • JSON เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เช—เซ‹เช เชตเชฃเซ€ เชตเชพเช‚เชšเซ‡ เช›เซ‡
  • เชกเซ€เชฌเช— เชฎเซ‹เชก เชซเซเชฒเซ‡เช— เชšเซ‡เช• เช•เชฐเซ‡เชฒ เช›เซ‡: เชœเซ‹ เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเซ‡เชฒ เชนเซ‹เชฏ, เชคเซ‹ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เชฒเซ‹เช‚เชš เชฅเชฏเซ‡เชฒ เชจเชฅเซ€ เช…เชจเซ‡ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชฒเซ‹เชก เชฅเชฏเซ‡เชฒ เชจเชฅเซ€
  • เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชกเซ‡เชŸเชพ เชฎเชพเชณเช–เซเช‚ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚

เชธเชฐเซเชตเชฐ

  • เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช…เชจเซเชธเชพเชฐ TCP เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซเช‚ เชฒเซ‹เชจเซเชšเชฟเช‚เช— เช•เชฐเซ‡ เช›เซ‡.
  • เชคเซ‡เชฎเชพเช‚ เชธเชฐเซเชต เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เชจเช‚เชฌเชฐ, เชฌเชซเชฐ เชธเชพเชˆเช เช…เชจเซ‡ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เชชเซ‹เชˆเชจเซเชŸเชฐ เชนเซ‹เชฏ เช›เซ‡. เชชเซเชฐเช•เชพเชฐเซ‹.เชธเซ‡เชŸเชฟเช‚เช—เซเชธ
  • เชฐเชจ เชชเชฆเซเชงเชคเชฟ เชจเซ‡เชŸเชตเชฐเซเช• เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡ (เช†เชชเซ‡เชฒ เชชเซ‹เชฐเซเชŸ เชชเชฐ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชจเซ‡เช•เซเชถเชจเซเชธ เชฎเชพเชŸเซ‡ เชธเชพเช‚เชญเชณเชตเซเช‚, เชœเซเชฏเชพเชฐเซ‡ เชจเชตเซเช‚ เช•เชจเซ‡เช•เซเชถเชจ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชจเชตเชพ เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เช–เชพเชจเช—เซ€ เชนเซ‡เชจเซเชกเชฒ เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡)
  • ะ’ เชนเซ‡เชจเซเชกเชฒ เช•เชจเซ‡เช•เซเชถเชจเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฌเชซเชฐเชฎเชพเช‚ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชธเซเชŸเซเชฐเชฟเช‚เช— เชฐเชœเซ‚เช†เชคเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ.เชชเชธเช‚เชฆเช—เซ€
  • เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ.เชชเชธเช‚เชฆเช—เซ€ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡ เชชเชฐเชฟเชฃเชพเชฎ เช…เชฅเชตเชพ เชญเซ‚เชฒเชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎ เชชเช›เซ€ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค protocol.Interpreteเชœเซ‡ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡ intrpr - เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชชเชฆเชพเชฐเซเชฅ เช…เชฐเซเชฅเช˜เชŸเชจ เชกเซ‡เชŸเชพ, เช…เชฅเชตเชพ เชชเชธเช‚เชฆเช—เซ€ เชชเชฐเชฟเชฃเชพเชฎเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เชญเซ‚เชฒเชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเซ‡ เช›เซ‡
  • เชชเช›เซ€ เชธเซเชตเซ€เชš เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ intrpr.commands[0] เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เชคเชชเชพเชธเซ‡ เช›เซ‡: เชชเชฐเชฟเชฃเชพเชฎ, inv, เชญเซ‚เชฒ เช…เชจเซ‡ เชเช• เชตเชฟเชญเชพเช— เช›เซ‡ เชฎเซ‚เชณเชญเซ‚เชค
  • เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชธเซเชตเซ€เชš เชฎเซ‚เชฒเซเชฏ เชฆเซเชตเชพเชฐเชพ เชœเซ‹เชตเชพ เชฎเชณเซ‡ เช›เซ‡ intrpr.commands[1] เชœเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡ เชฌเชซเชฐ เชฒเช‚เชฌเชพเชˆ ะธ เช†เชตเซƒเชคเซเชคเชฟ (เชฆเชฐเซ‡เช• เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช…เชจเซเชฐเซ‚เชช เช•เชพเชฐเซเชฏ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡)

เช•เชพเชฐเซเชฏเซ‹ GetVersion ะธ เชฌเชซเชฐ เชฒเช‚เชฌเชพเชˆ เชซเชพเชˆเชฒเชฎเชพเช‚ เช›เซ‡ srvlib.go เชธเชฐเซเชตเชฐ เชชเซ‡เช•เซ‡เชœ

GetVersion(conn net.Conn, version string)

เชคเซ‡ เชซเช•เซเชค เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เช›เชพเชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเซ‡เชฒ เชธเช‚เชธเซเช•เชฐเชฃ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡:

conn.Write([]byte("result:" + version))

.
เช•เชพเชฐเซเชฏ

BufferLength(conn net.Conn, intrpr *protocol.InterpreteData)

เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชฌเซเชฒเซ‹เช•, เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เช…เชฅเชตเชพ เช…เชจเซเชฏ เชšเซ‹เช•เซเช•เชธ เชกเซ‡เชŸเชพ เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡:

  • เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชกเซ‡เชŸเชพเชจเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‡ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เช›เชพเชชเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‡ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:
    fmt.Println("DataType:", intrpr.Commands[2])
  • เชฎเซ‚เชฒเซเชฏ เชตเชพเช‚เชšเซ‡ เช›เซ‡ เชถเชฐเซ€เชฐ เชธเช‚เช–เซเชฏเชพเชคเซเชฎเช• เชšเชฒ เชฎเชพเชŸเซ‡ buf_len
  • เชฌเชซเชฐ เชฌเชจเชพเชตเซ‡ เช›เซ‡ newbuf เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช•เชฆ:
    make([]byte, buf_len)
  • เชเช• เช เซ€เช• เชœเชตเชพเชฌ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡:
    conn.Write([]byte("result:ok"))
  • เชฐเซ€เชก เชธเซเชŸเซเชฐเซ€เชฎเชฎเชพเช‚เชฅเซ€ เชฌเชซเชฐเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชญเชฐเซ‡ เช›เซ‡:
    io.ReadFull(conn, newbuf)

    .

  • เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เชฌเชซเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เช“ เช›เชพเชชเซ‡ เช›เซ‡
    fmt.Println(string(newbuf))

    เช…เชจเซ‡ เชตเชพเช‚เชšเซ‡เชฒเชพ เชฌเชพเชˆเชŸเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ

    fmt.Println("Bytes length:", n)
  • เชเช• เช เซ€เช• เชœเชตเชพเชฌ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡:
    conn.Write([]byte("result:ok"))

เชธเชฐเซเชตเชฐ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚เชฅเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚เชฅเซ€ เช•เชพเชฐเซเชฏเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชกเซ‡เชŸเชพ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ.

เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ

เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชเช• เชฎเชพเชงเซเชฏเชฎ เชคเชฐเซ€เช•เซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชตเชฟเชจเชฟเชฎเชฏเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเซ‡ เช›เซ‡.

เชชเชธเช‚เชฆเช—เซ€(str เชธเซเชŸเซเชฐเชฟเช‚เช—) (เชธเซเชŸเซเชฐเชฟเช‚เช—, เชเชฐเชฐ) เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชพเชชเซเชค เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชฐเชพเชฅเชฎเชฟเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡, เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชกเซ‡เชŸเชพเชจเซ€ เชธเซเชŸเซเชฐเชฟเช‚เช— เชฐเชœเซ‚เช†เชค เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ‡เชฒ เชธเซเชŸเซเชฐเชฟเช‚เช— เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡ เชฆเซเชญเชพเชทเชฟเชฏเชพ:

  • เช‡เชจเชชเซเชŸ เชธเซเชŸเซเชฐเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชพเชฅเชพ เช…เชจเซ‡ เชถเชฐเซ€เชฐเชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ ReqParseN2(str)
  • เชนเซ‡เชกเชจเซ‡ เชคเชคเซเชตเซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ ReqParseHead(เชนเซ‡เชก) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฎเชพเชจเซเชก เชธเซเชฒเชพเช‡เชธเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  • ะ’ เชธเซเชตเชฟเชš เช•เชฐเซ‹(เช†เชฆเซ‡เชถเซ‹[0]) เชชเซเชฐเชพเชชเซเชค เช†เชฆเซ‡เชถ เชชเชธเช‚เชฆ เช•เชฐเซ‹ (cmd, เช•เซ€, เชธเชฐเชจเชพเชฎเซเช‚ เช…เชฅเชตเชพ เชตเชฟเชญเชพเช— เชŸเซเชฐเชฟเช—เชฐ เชฅเชพเชฏ เช›เซ‡ เชฎเซ‚เชณเชญเซ‚เชค)
  • cmd เชฎเชพเช‚ 2 เช†เชฆเซ‡เชถเซ‹ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชธเซเชตเซ€เชš(เช†เชฆเซ‡เชถเซ‹[1]) โ€” เชฒเช‚เชฌเชพเชˆ ะธ เชชเซเชฐเชพเชชเซเชคเชฟ.
  • เชฒเช‚เชฌเชพเชˆ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐ เชคเชชเชพเชธเซ‡ เช›เซ‡ เช†เชฆเซ‡เชถเซ‹[2] เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเชพเชšเชตเซ‡ เช›เซ‡ เชกเซ‡เชŸเชพเช‡เชช
  • เชคเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡ เชถเชฐเซ€เชฐ เชธเซเชŸเซเชฐเชฟเช‚เช— เชฎเซ‚เชฒเซเชฏ เชงเชฐเชพเชตเซ‡ เช›เซ‡
    len(body) < 1
  • เชชเซเชฐเชคเชฟเชญเชพเชต เชธเซเชŸเซเชฐเชฟเช‚เช— เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡:
    "result:bufferlength:" + datatype + "/" + body
  • เชชเซเชฐเชพเชชเซเชคเชฟ เชธเซเชŸเซเชฐเชฟเช‚เช— เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡
    return "result:version/auto"

เชฆเซเชญเชพเชทเชฟเชฏเชพ

InterpreteData เชฎเชพเชณเช–เซเช‚ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชชเชฐเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชกเซ‡เชŸเชพเชจเซ€ เช—เซŒเชฃ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เชšเซ‹เช‡เชธ เชถเชฌเซเชฆเชฎเชพเชณเชพเช“ เช…เชจเซ‡ เชชเชฆเชพเชฐเซเชฅ เชฐเชšเชจเชพ เช…เชฐเซเชฅเช˜เชŸเชจ เชกเซ‡เชŸเชพ.

type InterpreteData struct {
	Head string
	Commands []string
	Body string
	IsErr bool
	ErrCode int 
	ErrMessage string
}

เช•เชพเชฐเซเชฏ

Interprete(str string) (*InterpreteData, error)

เชถเชฌเซเชฆเชฎเชพเชณเชพ เชธเซเชตเซ€เช•เชพเชฐเซ‡ เช›เซ‡ เชชเชฐเชฟเชฃเชพเชฎ เช…เชจเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เชกเซ‡เชŸเชพ.

เชชเซเชฐเช—เชคเชฟ:

  • เชคเซ‡เชตเซ€ เชœ เชฐเซ€เชคเซ‡ เชšเซ‹เช‡เชธ เชฎเชฆเชฆเชฅเซ€ เชฎเชพเชฅเชพ เช…เชจเซ‡ เชถเชฐเซ€เชฐ เช•เชพเชขเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ ReqParseN2(str)
  • เชฎเชพเชฅเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชคเซเชตเซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เชฅเชพเชฏ เช›เซ‡ ReqParseHead(เชนเซ‡เชก)
  • เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเซเชฐเชพเชฐเช‚เชญ เชฅเชฏเซ‡เชฒ เช›เซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เชกเซ‡เชŸเชพ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชเช• เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชชเชฐเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

res := &InterpreteData{
	Head: head,
	Commands: commands,
	Body: body,
}
return res, nil

เช† เชชเชฆเชพเชฐเซเชฅเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ เชธเชฐเซเชตเชฐ.เช—เซ‹ เชฎเซเช–เซเชฏ เชชเซ‡เช•เซ‡เชœ.

เช•เซเชฒเชพเชˆเชจเซเชŸ

เช•เซเชฒเชพเชฏเช‚เชŸ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡ TCPConnect ะธ TCPresponseData.

เช•เชพเชฐเซเชฏ

TCPConnect(s *types.Settings, data []byte, payload []byte)

เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡:

  • เชชเชพเชธ เช•เชฐเซ‡เชฒ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช•เชจเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡
    net.Dial("tcp", s.Host + ":" + s.Port)
  • เชกเซ‡เชŸเชพ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชฎเชพเช‚ เชชเชธเชพเชฐ เชฅเชฏเซ‡เชฒ เชกเซ‡เชŸเชพ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡:
    conn.Write(data)
  • เชœเชตเชพเชฌ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡
    resp, n, _ := TCPResponseData(conn, s.BufSize)

    เช…เชจเซ‡ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เชฎเซเชฆเซเชฐเชฟเชค

    fmt.Println(string(resp[:n]))
  • เชœเซ‹ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชฅเชพเชฏ เช›เซ‡ เชชเซ‡เชฒเซ‹เชก เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเซ‡ เช›เซ‡
    conn.Write(payload)

    เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเชฃ เชตเชพเช‚เชšเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เช›เชพเชชเซ‡ เช›เซ‡

เช•เชพเชฐเซเชฏ

 TCPResponseData(conn net.Conn, bufsiz int) ([]byte, int, error)

เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช•เชฆเชจเซเช‚ เชฌเชซเชฐ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเช‚ เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชตเชพเช‚เชšเซ‡ เช›เซ‡ เช…เชจเซ‡ เช† เชฌเชซเชฐ เช…เชจเซ‡ เชตเชพเช‚เชšเซ‡เชฒเชพ เชฌเชพเชˆเชŸเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ, เชคเซ‡เชฎเชœ เชเช• เชเชฐเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡.

เช•เซเชฒเชพเชฏเชจเซเชŸ เชธเชฌเชฐเซ‚เชŸเชฟเชจ

เชจเซ‹เชก เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เชคเซ‡เชฎเชœ เชธเช‚เช•เซเชทเชฟเชชเซเชค เช†เช‚เช•เชกเชพ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡.

เชจเซ€เชšเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเซเชตเซ€เช•เชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡: JSON เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ, เชธเซเชŸเซเชฐเชฟเช‚เช— เชคเชฐเซ€เช•เซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ, เชชเซ‡เชฒเซ‹เชก เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเช‡เชฒเชจเซ‹ เชชเชพเชฅ, เชจเซ‹เชก เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจ เชซเซเชฒเซ‡เช—, เช†เช‚เช•เชกเชพเช•เซ€เชฏ เชฎเซ‚เชฒเซเชฏ เชคเชฐเซ€เช•เซ‡ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เชกเซ‡เชŸเชพเชจเซ‹ เชชเซเชฐเช•เชพเชฐ.

  • เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฎเซ‡เชณเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช
    st := types.ParseConfig(*config)
  • เชœเซ‹ เช‡เชฎเซ เชงเซเชตเชœ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เชคเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ เชถเซ‡เชกเซเชฏเซเชฒเชฐ
  • เชœเซ‹ เชซเชพเช‡เชฒเชจเซ‹ เชฎเชพเชฐเซเช— เชฆเชฐเซเชถเชพเชตเชคเซ‹ f เชซเซเชฒเซ‡เช— เชชเซ‚เชฐเซ‹ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ เชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช fdb เช…เชจเซ‡ เชธเชพเชฎเช—เซเชฐเซ€ เชธเชฐเซเชตเชฐ เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡
    client.TCPConnect(st, []byte(CMD_BUFFER_LENGTH + ":" + strconv.Itoa(*t) + "/" + strconv.Itoa(fdblen)), fdb)
  • เชœเซ‹ เชซเชพเช‡เชฒ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจเชฅเซ€, เชคเซ‹ เชงเซเชตเชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เช–เชพเชฒเซ€ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ -d:
    client.TCPConnect(st, []byte(*data), nil)

เช† เชฌเชงเซเช‚ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เชฆเชฐเซเชถเชพเชตเชคเซ€ เชเช• เชธเชฐเชณ เชฐเชœเซ‚เช†เชค เช›เซ‡. เชตเชฟเช•เชพเชธ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชคเซ‡เชจเซ€ เชฐเชšเชจเชพเชฎเชพเช‚ เชœเชฐเซ‚เชฐเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชฌเซ€เชœเชพ เชญเชพเช—เชฎเชพเช‚ เชนเซเช‚ เชฌเซเชฒเซ‹เช•เซเชธ เช…เชจเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเซเชธ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ, 3 เชฎเชพเช‚ JavaScript เชฅเซ€ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ WebSocket เชธเชฐเซเชตเชฐ เชตเชฟเชถเซ‡, 4 เชฎเชพเช‚ เชนเซเช‚ เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจ เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เชœเซ‹เชˆเชถ, เชชเช›เซ€ เชเช• เชธเซเชŸเซ‡เช• เชฎเชถเซ€เชจ เชœเซ‡ เช‡เชจเชชเซเชŸเซเชธ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ, เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚เชฅเซ€ เชฌเชพเช‡เชŸเช•เซ‹เชก เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เช†เช‰เชŸเชชเซเชŸ เชฎเชพเชŸเซ‡ เชชเซ‚เชฒ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹