Go言語のTCP・UDPソケットプログラミング入門|初心者でもわかるネットワーク通信の基本
生徒
「Go言語で、パソコン同士が直接やり取りする通信ってできるんですか?」
先生
「できます。Go言語ではTCPやUDPという仕組みを使って、ネットワーク通信が行えます。」
生徒
「TCPとかUDPって、聞いたことはありますけど、何が違うんですか?」
先生
「それぞれ特徴があります。まずはソケット通信の基本から説明していきますね。」
1. ソケットプログラミングとは?
ソケットプログラミングとは、ネットワークを通じてデータを送ったり受け取ったりする仕組みを直接扱うプログラミング方法です。
とても難しく聞こえますが、イメージとしては「手紙の通り道」を自分で用意して、文字をやり取りする感じです。
Go言語はネットワーク処理が標準機能として充実しているため、TCPやUDPのソケット通信を比較的簡単に書けます。
2. TCP通信とUDP通信の違い
TCPは、確実にデータを届ける通信方法です。順番通りに届き、途中で失敗するとやり直します。Webサイト閲覧やメールで使われています。
UDPは、速さ重視の通信方法です。多少データが欠けても気にせず送ります。動画配信やゲーム通信でよく使われます。
Go言語では、用途に応じてTCPとUDPを使い分けることが大切です。
3. Go言語でTCPサーバーを作る基本
まずはTCP通信の受け口となるサーバーを作ってみましょう。これは「電話を受ける側」の役割です。
package main
import (
"net"
)
func main() {
listener, _ := net.Listen("tcp", ":8080")
defer listener.Close()
conn, _ := listener.Accept()
defer conn.Close()
}
net.Listenは「この番号で待ちます」という意味です。ここでは8080番ポートで通信を待っています。
4. TCPでデータを送受信してみよう
次に、TCP通信で文字を受け取り、返す簡単な例です。これは「会話」をしている状態です。
buf := make([]byte, 1024)
conn.Read(buf)
conn.Write([]byte("受信しました"))
Readは相手の声を聞く操作、Writeは自分の声を送る操作だと考えると分かりやすいです。
5. Go言語でTCPクライアントを作る
次は、サーバーに接続するクライアント側の例です。こちらは「電話をかける側」です。
package main
import (
"net"
)
func main() {
conn, _ := net.Dial("tcp", "localhost:8080")
defer conn.Close()
conn.Write([]byte("こんにちは"))
}
Dialは「指定した相手に接続する」という意味です。TCP通信の基本形になります。
6. UDP通信の基本的な考え方
UDP通信は、TCPと違って接続という概念がありません。送るときに毎回相手を指定します。
その分、処理が軽く速いですが、確実性は保証されません。Go言語でもUDPはシンプルに扱えます。
7. Go言語でUDP通信を行う例
最後に、UDPでデータを送信する簡単な例です。これは「一方的に声を投げる」イメージです。
package main
import (
"net"
)
func main() {
addr, _ := net.ResolveUDPAddr("udp", "localhost:9000")
conn, _ := net.DialUDP("udp", nil, addr)
defer conn.Close()
conn.Write([]byte("UDP通信"))
}
UDPでは、接続確認をせずにデータを送ります。そのため、リアルタイム性が高い処理に向いています。
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!