網路程式設計 TCP通訊併發版C S

2021-09-23 10:45:48 字數 1333 閱讀 8334

server端**:

package main

import (

"fmt"

"net"

"strings"

)func main()

fmt.println("伺服器已啟動...")

defer listener.close()//關閉socket

//迴圈監聽客戶端連線請求

for

go handleconnect(conn) }}

func handleconnect(conn net.conn)

if n == 0

if "exit\n"==string(buf[:n])

fmt.printf("伺服器讀到%s客戶端發來的資料%s:",addr,string(buf[:n]))

//小寫轉大寫,回發給客戶端

s := strings.toupper(string(buf[:n]))

conn.write(byte(s))

}}

client端**:

package main

import (

"fmt"

"net"

"os"

)func main()

defer conn.close()

//獲取使用者鍵盤輸入,將資料傳送給伺服器

go func()

//將鍵盤讀取的資料傳送給伺服器

conn.write(buf[:n])

} }()

//讀伺服器回發的大寫資料

buffer :=make(byte,4096)

for

fmt.println("讀到伺服器回發的資料:",string(buffer[:n]))

}}

演示:

1.直接在ide中啟動伺服器:如下圖所示:

2.開啟兩個終端,用於模擬兩個客戶端。兩個終端分別執行客戶端的**並傳送資料: 

3.此時伺服器收到了兩個客戶端發來的資料:

網路通訊C S模型 TCP

基本模型圖如下 伺服器呼叫socket bind listen 完成初始化後,呼叫accept 阻塞等待,處於監聽埠的狀態,客戶端呼叫socket 初始化後,呼叫connect 發出syn段並阻塞等待伺服器應答,伺服器應答乙個syn ack段,客戶端收到後從connect 返回,同時應答乙個ack段...

QT網路程式設計Tcp下C S架構的即時通訊

先寫乙個客戶端,實現簡單的,能加入聊天,以及加入伺服器的介面。ifndef tcpclient h define tcpclient h include include include include include include include include class tcpclient p...

socket網路程式設計TCP中C S架構函式框架

建立套接字 socket 填充伺服器網路資訊結構體 sockaddr in 將套接字與伺服器網路資訊結構體繫結 bind 將套接字設定為被動監聽狀態 listen 阻塞等待客戶端的連線請求 accept 進行通訊 recv send 建立套接字 socket 填充伺服器網路資訊結構體 sockadd...