Go基礎程式設計 Socket程式設計

2021-08-24 20:36:35 字數 1230 閱讀 3198

socket起源於unix,而unix基本哲學之一就是「一切皆檔案」,都可以用「開啟open –> 讀寫write/read –> 關閉close」模式來操作。socket就是該模式的乙個實現,網路的socket資料傳輸是一種特殊的i/o,socket也是一種檔案描述符。socket也具有乙個類似於開啟檔案的函式呼叫:socket(),該函式返回乙個整型的socket描述符,隨後的連線建立、資料傳輸等操作都是通過該socket實現的。

常用的socket型別有兩種:流式socket(sock_stream)和資料報式socket(sock_dgram)。流式是一種面向連線的socket,針對於面向連線的tcp服務應用;資料報式socket是一種無連線的socket,對應於無連線的udp服務應用。

package main

import (

"fmt"

"log"

"net"

"strings"

)func dealconn(conn net.conn)

//切片擷取,只擷取有效資料

result := buf[:n]

fmt.printf("接收到資料來自[%s]==>[%d]:%s\n", ipaddr, n, string(result))

if "exit" == string(result)

//把接收到的資料轉換為大寫,再給客戶端傳送

conn.write(byte(strings.toupper(string(result))))

}}func main()

defer listenner.close()

for

go dealconn(conn)}}

package main

import (

"fmt"

"log"

"net"

)func main()

defer conn.close() //關閉

buf := make(byte, 1024) //緩衝區

for

//切片擷取,只擷取有效資料

result := buf[:n]

fmt.printf("接收到資料[%d]:%s\n", n, string(result))}}

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...

Linux程式設計基礎 Socket程式設計

linux下的socket程式設計大體上包括tcp socket udp socket即raw socket這三種,其中tcp和udp方式的socket程式設計用於編寫應用層的socket程式,是我們用得比較多的,而raw socket則用得相對較少,不在本文介紹範圍之列。tcp socket 基於...