首页 > 其他分享 >tcp连接

tcp连接

时间:2022-11-28 16:58:46浏览次数:46  
标签:return err fmt tcp Println buf 连接 conn

服务器端

package main
import (
	"fmt"
	"net"
	"strings"
)
func  HandleConnect( conn net.Conn)  {
		defer conn.Close()
		addr:=conn.RemoteAddr()
		fmt.Println(addr,"客户端成功连接")
		buf:=make([]byte,4096)
		for {
			n,err:=conn.Read(buf)
			if "exit\n" == string(buf[:n]) ||  "exit\r\n" == string(buf[:n]){
				fmt.Println("客户端关闭连接")
				return
			}
			if n ==0 {
				fmt.Println("Client is close")
				return
			}
			if err != nil {
				fmt.Println("conn Read err",err)
				return
			}
			fmt.Println("服务器读到客户端数据:",string(buf[:n]))
			conn.Write([]byte(strings.ToUpper(string(buf[:n]))))
		}
}
func main(){
	listener,err:= net.Listen("tcp","127.0.0.1:9001")
	if err != nil {
		fmt.Println("net.listen is error")
		return
	}
	defer listener.Close()
	fmt.Println("服务器等待客户端连接...")
	for {
		conn,err:= listener.Accept()
		if err != nil {
			fmt.Println("accept is error") 
			return
		}
		go HandleConnect(conn)
	}
}

客户端

package main

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

func main(){
	conn,err:=net.Dial("tcp","127.0.0.1:9001")
	if err != nil {
		fmt.Println("connect server is error")
		return
	}
	defer conn.Close()

	go func(){
		str:=make([]byte,4096)
		for {
			n,err:=os.Stdin.Read(str)
			if n ==0 {
				fmt.Println("server is close")
				return
			}
			if err != nil {
				fmt.Println("os.Stdin is error")
				continue
			}
			conn.Write(str[:n])
		}
	}()
	//读取服务器
	buf:=make([]byte,4096)
	for {
		n,err:=conn.Read(buf)
		if n == 0 {
			fmt.Println("服务端关闭连接了...")
			return
		}
		if "exit\n" == string(buf[:n]) || "exit\r\n" == string(buf[:n]) {
			fmt.Println("客户端关闭连接")
			return
		}
		if err != nil {
			fmt.Println("os.buf is error")
			return
		}
		fmt.Println("客户端读到服务端数据:", string(buf[:n]))
	}
}

标签:return,err,fmt,tcp,Println,buf,连接,conn
From: https://www.cnblogs.com/zh718594493/p/16932601.html

相关文章

  • c#实现本机Tcp通信
    创建服务端privatevoidStartServer(){try{//SettheTcpListeneronport13000.Int32po......
  • Linux软连接和硬链接
    1.Linux链接概念Linux链接分两种,一种被称为硬链接(HardLink),另一种被称为符号链接(SymbolicLink)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。......
  • 实验五:全连接神经网络手写数字识别实验v
    【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方法;掌握使用pytorch框架训练和推理全连接神经网络模型的编程实现方法。【实验内容】1.使用pytorch框架,......
  • tcpdump一个命令的剖析
     简单介绍:用简单的话来定义tcpdump,就是:dumpthetrafficonanetwork,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”......
  • TCP/UDP的连接与关闭详解
    https://blog.csdn.net/pupoqian3720/article/details/81290011传输层:总体作用:在广域网中建立数据传输通道,进行数据传输,负责端到端的通信那么是什么是端到端呢?A:两个方......
  • 即时通讯技术文集(第7期):长连接网关、P2P等 [共10篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第7 期。[- 1 -] 长连接网关技术专题(二):知乎千万级并发的高性能长连接......
  • #盲盒+码#【FFH】学习设备开发之Hi3861-TCPclient-开关灯
    (目录)【本文正在参加「盲盒」+码有奖征文活动】:https://ost.51cto.com/posts/19288一、前言学习OpenHarmony南向设备开发中的网络通信,它可以将底层开发板获得的数据传......
  • 此功能需要连接到internet。是否允许office连接到internet
     问题在OneNote中进行一些操作的时候提示:此功能需要连接到internet。是否允许office连接到internet  解决方法1.快捷键Win+R,打开"运行"对话框 2.输......
  • ssh 如何连接docker
    1.确保容器已经跑起来,并映射出ssh需要的22端口。dockerrun-it-p12222:222.需要在docker容器中安装ssh的sever端sudoaptinstallopenssh-server......
  • 实验五:全连接神经网络手写数字识别实验
    实验五:全连接神经网络手写数字识别实验 【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方法;掌握使用pytorch框架训练和推理全连接神经网络模型的编程......