美文网首页Golang程序员程序园
golang 网络编程(2)TCP

golang 网络编程(2)TCP

作者: zidea | 来源:发表于2019-04-26 16:12 被阅读5次
golang_real.jpg

TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

说到网络编程我们先理解一个术语套接字,突破这个术语,我们就向理解 TCP 迈出了一大步。简单比喻一下吧,我们彼此间通过打电话或写信的进行哪种不是面对面的交流,套接字就是我们进行这些交流工具,电话机或是邮箱,仅此而已。

我们今天用 go 语言实现一个 TCP 通讯,go 语言对 TCP 进行封装来方便我们开发 TCP 服务。

package main

import(
    "fmt"
    "io"
    "net"
    "time"
)

func main()  {
    ln, err := net.Listen("tcp",":9000")
    if err != nil{
        panic(err)
    }
    defer ln.Close()

    for{
        conn, err := ln.Accept()
        if err != nil{
            panic(err)
        }

        io.WriteString(conn, fmt.Sprint("Hello World\n",time.Now(),"\n"))

        conn.Close()
    }
}

我们创建 TCP 服务,监听本地的 9000 端口,看一下 Listen 方法具体做了什么,我们查看一下 Listen 的源码,Listen 方法接收 net 和 laddr 两个参数,然后返回一个 Listener 和 error 对象。listen表示服务已经就绪可以接受请求,但是不等于已经连接上服务。这是请求连接的客户端的请求还处于请求等待中。

conn, err := ln.Accept()

表示接受客户端的请求,返回 socket 套接字连接,向客户端写入数据。

func Listen(net, laddr string) (Listener, error){
}
type Listener interface{
  Accept(){ c Conn, err error}
  Close()
  Addr()
}

继续查看返回的 Listener 接口提供了 Close、Accept 和 Addr 三个方法。在上面的代码中 defer ln.Close() 我们调用了其Close 方法表示最终将关闭服务。
在 for 循环中,在 go 语言中没有 while 和 do-while ,只有 for 在没有任何条件就是表示无限循环。在循环体中调用ln.Accept()方法来获取连接对象 connect

type Conn interface{
  Read(b []byte) (n int, err error)
 ...
}

相关文章

  • Golang网络编程TCP连接

    Golang网络编程 TCP编程编写服务端package mainimport ( "bufio" "fmt"...

  • golang 网络编程(2)TCP

    TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节...

  • GoLang TCP网络编程

    原文链接:http://blog.csdn.net/hacker00011000/article/details/...

  • Golang-Server编程

    Golang-Server编程 http://studygolang.com/articles/2004 TCP...

  • Golang网络编程TCP粘包

    服务端代码如下 客户端 result: result通过以上截图可以看出客户端写了19次的消息到服务端。但是服务端...

  • golang简单tcp代理

    使用golang网络编程实现一个简单的TCP代理(不支持HTTP) 使用方式 代理监听9000端口,代理后端服务的...

  • 安卓网络编程系列

    1.网络编程系列第(一)篇---TCP/IP 第一篇主要介绍TCP/IP协议组 2.网络编程系列第(二)篇---h...

  • 网络基础介绍

    网络编程的两种 TCP socket编程,是网络编程的主流。之所以叫Tcp socket编程,是因为底层是基于Tc...

  • 第四十天——[TCP网络编程]

    学习内容:TCP网络编程(2/2)、网络通信过程(1/3)收获: 了解了TCP服务器并发; 了解了web服务器的概...

  • Android 基于TCP/IP的Socket通信

    参考 1、Android网络编程 - TCP/IP协议实践2、Android-TCP客户端的实现3、Android...

网友评论

    本文标题:golang 网络编程(2)TCP

    本文链接:https://www.haomeiwen.com/subject/xjtlgqtx.html