文档章节

golang tcp server client

香山老妖
 香山老妖
发布于 2015/12/22 19:04
字数 186
阅读 39
收藏 0

golang tcp 使用的函数:

net.ResolveTCPAddr(tcp, serveraddr string) 

net.ListenTCP(tcp,server string)

conn.Accept()


#golang tcp server 

//follow by <go web program>
package main

import (
    "fmt"
    "os"
    "net"
)

func checkError(err error){
    if err != nil {
        fmt.Fprintf(os.Stderr, "Fatal Error : %s ", err.Error())
        os.Exit(1)
    }
}

func main() {
    //server addr define 
    server := ":7777"    
    //make addr
    tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
    checkError(err)
    //bind address & listen
    listener, err := net.ListenTCP("tcp", tcpAddr)
    checkError(err)
    
    //worker
    for {
        conn, err := listener.Accept()
        if err != nil {
            continue
        }
        daytime := time.Now().String()
        fmt.Println(conn.LocalAddr())
        fmt.Println(conn.RemoteAddr())
        conn.Write([]byte(daytime))
        conn.Close()
    }
}


#golang tcp client


package main

import (
    "fmt"
    "io/ioutil"
    "net"
    "os"
)

func checkError(err error){
    if err != nil {
        fmt.Fprintf(os.Stderr, "Fatal Error: %s" , err.Error())
        os.Exit(1)
    }
}

func main() {
    //get host:port from args
    if len(os.Args) != 2 {
        fmt.Fprintf(os.Stderr, "usage: % host:port", os.Args[0])
        os.Exit(1)
    }
    service := os.Args[1]
    tcpAddr,err := net.ResolveTCPAddr("tcp4", service)
    checkError(err)
    conn,err:= net.DialTCP("tcp", nil, tcpAddr)
    checkError(err)
    _,err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))
    checkError(err)
    
    result,err := ioutil.ReadAll(conn)
    checkError(err)
    fmt.Println(string(result))
    os.Exit(0)
    
}



© 著作权归作者所有

香山老妖
粉丝 0
博文 28
码字总数 6709
作品 0
海淀
私信 提问
Golang实现简单tcp服务器01 -- 概述

概述 Golang作为一门近些年来非常风光的开发语言, 其实用范围很广, 图形界面, web框架, 图像引擎等等. 由于其语言特性简化了并发/多核的开发, 受到了很大的关注. 而使用它进行服务器开发, 也...

victoriest
2015/06/02
359
0
RPC / JSON-RPC in Golang

RPC(Remote Procedure Call)—— 远程过程调用。通过它可以使函数调用模式网络化。客户端就像调用本地函数一样,客户端把这些参数打包之后通过网络传递到服务端,服务端解包到处理过程中执...

与蟒唯舞
2018/10/19
0
0
用go和zk实现一个简单的分布式server

golang的zk客户端 最近打算写个简单的配置中心,考虑到实现便捷性,语言选择了go,由于其中计划用到zk,就调研了下golang的zk客户端,并实现了个简单的分布式server。最终找到了两个,地址如...

oO脾气不坏Oo
2016/07/09
593
0
高性能和轻量级网络库 - gnet

gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:l...

潘少online
09/16
7.5K
8
B站直播:使用Golang重构,流量最大的推送功能

1 悲剧直播推送功能 ****** 1.1 B站直播推送功能的困境 ***B站直播有个推送功能,就是这里,看到那个红色的数字没有,显示你关注的主播开播人数。 然后每个进入B站的用户,不管是不是直播的观...

anoty
2016/10/22
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
11
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
13
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
13
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
13
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部