Go 語言的Tcp協議

2021-09-13 18:59:06 字數 1626 閱讀 2420

client 端**

package main

import (

"fmt"

"bufio"

"net"

"os"

"strings"

)// 錯誤處理

func checkerror(err error)

}func messagesend(conn net.conn)

// 向伺服器寫入資料

_,err:=conn.write(byte(input))

// 發生錯誤時退出

if err != nil

}}// 主函式

func main()

// 正常執行時列印出接收伺服器端傳送過來是資訊

fmt.println("receive server message content:" + string(buff))

}fmt.println("client program end!")

}

server端**

package main

import (

"os"

"fmt"

"net"

"strings"

"log"

)// 申明乙個日誌檔案變數

var logfile *os.file

var logger *log.logger;

var onlineconns = make(map[string]net.conn)

var messagequeue = make(chan string,1000)

var quitchan = make(chan bool)

const (

log_directory = "./test.log"

)func checkerror(err error)

}func processinfo(conn net.conn)

}(conn)

for

if numofbytes !=0

}}func comsummessage()

}}// 處理資訊問題

func doprocessmessage(message string)

}}else

if conn,ok := onlineconns[contents[0]] ;ok}}

}}func main()

defer logfile.close()

logger = log.new(logfile,"\r\n",log.ldate|log.ltime|log.llongfile)

listen_socket ,err := net.listen("tcp","127.0.0.1:8080")

checkerror(err)

defer listen_socket.close()

fmt.println("server is waitting......")

logger.println("i am writing the logs ")

go comsummessage()

for

go processinfo(conn)

}}

C語言 TCP協議

1.總結 注意接收資料的處理才是最麻煩的,最麻煩的,留此記性,下次注意!16進製制轉16進製制字串需要特殊處理,跟我以前用c 處理方式完全不同,也可能是因為接觸c語言不多,知識狹隘 可以在精簡 留在下次 此處只有server端資訊接收處理 server include include include...

GO語言TCP程式設計正規化

一直用go編寫tcp http websocket伺服器,得空總結一些簡單的正規化,供參考。在github上都可以看到。之前用c 寫tcp server,一般兩種模式 1個listener執行緒 n個processor執行緒 通過reuseport機制,n個listener執行緒,tcp包的處理可以...

go語言 tcp eof Go語言TCP網路通訊

tcp 工作在網路的傳輸層,它屬於一種面向連線的可靠的通訊協議。tcp 伺服器的工作過程 tcp 伺服器首先註冊乙個公知埠,然後呼叫 listen 函式在這個埠上建立乙個 tcplistener 監聽物件,並在該物件上監聽客戶機的連線請求。啟用 tcplistener 物件的 accept 方法接收...