socket 實現的 web 伺服器在 Windows 下的讀寫問題
用 socket 實現了個簡陋的 web 伺服器。這段程式碼在 Linux 和 Mac 下執行都是正常的,通過瀏覽器都可以能響應 “Hello world!”;但是在 Windows 下執行時,通過瀏覽器訪問會報錯 “This site can’t be reached The connection was reset.”。
// socket 實現的簡單 web 伺服器
package main
import (
"log"
"net"
"os"
)
var content = []byte("HTTP/1.1 200 OK\r\nContent-type:text/plain\r\n\r\nHello world!")
func handleConn(conn net.Conn) {
conn.Write(content)
defer conn.Close()
}
func main() {
addr := "localhost:10000"
listener, err := net.Listen("tcp", addr)
checkErr(err)
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
log.Fatal(err)
continue
}
go handleConn(conn)
}
}
func checkErr(err error) {
if err != nil {
log.Fatal(err)
os.Exit(1)
}
}
後來我把 handleConn 函式修改了一下:
func handleConn(conn net.Conn) {
var buf = make([]byte, 1024) // buf 要確保所有資料都讀出來了
_, err := conn.Read(buf)
checkErr(err)
conn.Write(content)
defer conn.Close()
}
改完之後,在 Linux, Mac 和 Windows 下都可以響應 “Hello world!” 了。也就是說在 Windows 系統下必須把連線裡的位元組全部讀取之後才可以,而在 Linux 和 Mac 下則讀不讀都可以。不知道這是我的程式碼問題還是說由於系統的原因必須要這樣寫,又或者是其它原因?
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 讀寫者問題-java實現Java
- 讀者-寫著問題中寫者優先的實現
- Netty實現Web SocketNettyWeb
- Tomcat實現Web SocketTomcatWeb
- socket在windows下和linux下的區別的網路文摘WindowsLinux
- socket伺服器建聊天室的問題伺服器
- C#中使用Socket實現簡單Web伺服器C#Web伺服器
- JIVE在WINDOWS下的中文顯示問題的解決Windows
- Spring Boot實現Web SocketSpring BootWeb
- 請教伺服器是NIO的socket server問題?伺服器Server
- windows下vim的使用問題Windows
- 有名訊號量實現讀者-寫者問題(讀者優先)
- 記一次 Nuxt 3 在 Windows 下的打包問題UXWindows
- 賜教在windows下安裝linux的問題(轉)WindowsLinux
- Java疑問:-------在Socket中用PrintWriter 寫入的資料為什麼用DataInputStream不能讀取?JavaAI
- php原生socket之IO多路複用以及實現web伺服器PHPWeb伺服器
- 從零手寫實現 tomcat-03-基本的 socket 實現Tomcat
- DDD專案現在實施的問題
- websphere ejb壓力測試下,鎖socket的問題Web
- Windows 下設定archive的問題WindowsHive
- 重要的問題寫下來思考
- java的nio之:java的bio流下實現的socket伺服器同步阻塞模型和socket的偽非同步的socket伺服器的通訊模型Java伺服器模型非同步
- 通過STANDBY資料庫實現讀寫分離時索引過多的問題資料庫索引
- epoll+socket實現 socket併發 linux伺服器Linux伺服器
- 如何用PHP實現Socket伺服器PHP伺服器
- NIO Socket實現檔案伺服器伺服器
- C++Builder下實現埠讀寫 (轉)C++UI
- java 對word 檔案的讀寫問題Java
- 線上MySQL讀寫分離,出現寫完讀不到問題如何解決MySql
- Epoll在LT和ET模式下的讀寫方式模式
- 寫個 .NET 程式解決 Windows 版微信 3.9 收到檔案“只讀”的問題Windows
- 求助: Socket的InputStream和OutputStream的問題
- node的讀寫流簡易實現
- 【Mongo】Mongo讀寫分離的實現Go
- 請問一下關於socket跟頁面請求的問題
- C#高效能Socket伺服器SocketAsyncEventArgs的實現(IOCP)C#伺服器
- java的socket程式設計問題Java程式設計
- socket網路傳輸的問題