当前位置: 首页 > news >正文

网站流量分析报告今天广州新闻最新消息

网站流量分析报告,今天广州新闻最新消息,专业建设英文网站,lnmp wordpress 不显示主题项目地址 https://github.com/cmdch2017/http_tcpServer 项目结构 如何快速上手 http篇 1、controller包就相当于RestController#xff0c;这里返回了一个Person对象#xff0c;当你需要新建一个接口时#xff0c;再新写一个func仿照下面的方法就行了 package control…项目地址 https://github.com/cmdch2017/http_tcpServer 项目结构 如何快速上手 http篇 1、controller包就相当于RestController这里返回了一个Person对象当你需要新建一个接口时再新写一个func仿照下面的方法就行了 package controllerimport (net/httptestproject12/commontestproject12/entitytestproject12/util )// PersonHandler 无入参返回person类 func PersonHandler(w http.ResponseWriter, r *http.Request) {// 创建一个Person对象person : entity.Person{Name: John Doe,Age: 30,Title: Software Engineer,}messageHex : FFFFFFutil.SendHexMessageToAllUser(messageHex)// 封装为JSON格式的CommonResult并写入响应体common.WriteJSONResponse(w, http.StatusOK, common.DefaultSuccessMsg, person) } 2、router.go负责配置路由下面的代码中server.AddRoute的key相当于RequestMapping(“/person”)value是上面文件在controller包下方法是PersonHandler package routerimport (testproject12/controllertestproject12/httpServer )func SetupRoutes(server *httpServer.HTTPServer) {// 添加路由server.AddRoute(/person, controller.PersonHandler)// Add more routes as needed } tcp篇 用SocketTool新建一个客户端 http://localhost:8080/person 服务器收到数据FFFFFF 总结 实现了http请求与tcp请求如果有需要的话请fork我的github代码 性能 附录 完整代码 package commonimport (encoding/jsonfmtnet/http )// Constants for CommonResult keys const (CodeTag codeMsgTag msgDataTag data )// Default success and failure messages const (DefaultSuccessMsg 操作成功DefaultFailedMsg 操作失败 )// CommonResult creates a new CommonResult object with the given code and message func CommonResult(code int, msg string) map[string]interface{} {return map[string]interface{}{CodeTag: code,MsgTag: msg,} }func CommonResultWithData(code int, msg string, data interface{}) map[string]interface{} {result : CommonResult(code, msg)if data ! nil {result[DataTag] data}return result }// Success returns a CommonResult representing success with an optional data payload func Success(data ...interface{}) map[string]interface{} {result : CommonResult(HttpStatusSuccess, DefaultSuccessMsg)if len(data) 0 {result[DataTag] data[0]}return result }// Error returns a CommonResult representing an error with an optional data payload func Error(msg string, data ...interface{}) map[string]interface{} {result : CommonResult(HttpStatusError, msg)if len(data) 0 {result[DataTag] data[0]}return result }// HttpStatus constants const (HttpStatusSuccess iotaHttpStatusError )func WriteJSONResponse(w http.ResponseWriter, code int, msg string, data interface{}) {// 创建一个CommonResult并将数据放入其中result : CommonResultWithData(code, msg, data)// 将CommonResult对象序列化为JSON格式的字符串resultData, err : json.Marshal(result)if err ! nil {fmt.Println(json格式化错误)http.Error(w, Internal Server Error, http.StatusInternalServerError)return}// 设置响应头为JSON格式w.Header().Set(Content-Type, application/json)// 将JSON数据写入响应体w.Write(resultData) } package controllerimport (net/httptestproject12/commontestproject12/entitytestproject12/util )// PersonHandler 无入参返回person类 func PersonHandler(w http.ResponseWriter, r *http.Request) {// 创建一个Person对象person : entity.Person{Name: John Doe,Age: 30,Title: Software Engineer,}messageHex : FFFFFFutil.SendHexMessageToAllUser(messageHex)// 封装为JSON格式的CommonResult并写入响应体common.WriteJSONResponse(w, http.StatusOK, common.DefaultSuccessMsg, person) } package entityimport nettype ClientInfo struct {Conn net.Conn } package entitytype Person struct {Name string json:nameAge int json:ageTitle string json:title } package httpServerimport (fmtnet/http )// HTTPServer represents an HTTP tcpserver type HTTPServer struct {routes map[string]http.HandlerFunc }// NewHTTPServer creates a new HTTPServer instance func NewHTTPServer() *HTTPServer {return HTTPServer{routes: make(map[string]http.HandlerFunc),} }// AddRoute adds a new route to the HTTP tcpserver func (s *HTTPServer) AddRoute(path string, handler http.HandlerFunc) {s.routes[path] handler }// RunHTTPServer starts the HTTP tcpserver and sets up the routes func (s *HTTPServer) RunHTTPServer() {for path, handler : range s.routes {// 添加http路由http.HandleFunc(path, handler)}err : http.ListenAndServe(:8080, nil)if err ! nil {fmt.Println(HTTP服务器启动失败:, err)} } package mainimport (testproject12/httpServertestproject12/routertestproject12/tcpserver )func main() {// 创建并运行TCP服务器go tcpserver.NewServer().RunTCPServer()// 创建HTTP服务器httpserver : httpServer.NewHTTPServer()// 设置路由router.SetupRoutes(httpserver)// 启动HTTP服务器go httpserver.RunHTTPServer()select {} } package routerimport (testproject12/controllertestproject12/httpServer )func SetupRoutes(server *httpServer.HTTPServer) {// 添加路由server.AddRoute(/person, controller.PersonHandler)// Add more routes as needed } package tcpserverimport (encoding/hexfmtnetsynctestproject12/entity )// 所有用户信息 var AllConnectionList []net.Conn// Server 服务端结构体 type Server struct {Clients map[string]entity.ClientInfoMutex sync.Mutex }// NewServer creates a new Server instance func NewServer() *Server {return Server{Clients: make(map[string]entity.ClientInfo),} } func SendHexMessage(conn net.Conn, hexMessage string) error {messageBytes, err : hex.DecodeString(hexMessage)if err ! nil {fmt.Println(转换错误, err)return err}_, err conn.Write(messageBytes)if err ! nil {fmt.Println(发送消息失败, err)return err}return nil }// RemoveConnection removes a connection from AllConnectionList func RemoveConnection(conn net.Conn) {for i, c : range AllConnectionList {if c conn {AllConnectionList append(AllConnectionList[:i], AllConnectionList[i1:]...)break}} }// RunTCPServer starts the TCP tcpserver func (s *Server) RunTCPServer() {fmt.Println(服务端启动了)listen, err : net.Listen(tcp, 0.0.0.0:8888)if err ! nil {fmt.Println(监听失败, err)return}// 循环等待客户端的连接for {conn, err : listen.Accept()if err ! nil {fmt.Println(客户端的等待失败, err)return} else {fmt.Printf(等待连接成功:,con%v,接受到的客户端信息%v \n, conn, conn.RemoteAddr().String())// 服务端主动发送消息给客户端messageHex : 48656c6c6f2066726f6d20736572766572 // Hello from tcpserver 的十六进制表示SendHexMessage(conn, messageHex)}// 处理客户端连接的协程go s.handleClient(conn)} }// 处理客户端连接 func (s *Server) handleClient(conn net.Conn) {defer conn.Close()// 获取客户端地址clientAddr : conn.RemoteAddr().String()// 将客户端信息存储到 map 中s.Mutex.Lock()s.Clients[clientAddr] entity.ClientInfo{Conn: conn, // 存储客户端连接对象}AllConnectionList append(AllConnectionList, conn)s.Mutex.Unlock()// 处理客户端消息for {buf : make([]byte, 1024)n, err : conn.Read(buf)if err ! nil {break}// 处理接收到的消息hexData : hex.EncodeToString(buf[:n])fmt.Println(收到客户端消息, clientAddr, :, hexData)}// 客户端断开连接从 map 中移除该用户s.Mutex.Lock()delete(s.Clients, clientAddr)RemoveConnection(conn)s.Mutex.Unlock()fmt.Println(客户端断开连接, clientAddr) } package utilimport (encoding/hextestproject12/tcpserver )// SendHexMessage 发送十六进制消息// SendHexMessageToAllUser 广播发送十六进制消息 func SendHexMessageToAllUser(message string) {messageHex : hex.EncodeToString([]byte(message))for _, conn : range tcpserver.AllConnectionList {tcpserver.SendHexMessage(conn, messageHex)} } Dockerfile # Use the official Golang image as the base image FROM golang:1.21-alpine# Set the working directory inside the container WORKDIR /go/src/app# Copy the contents of the current directory to the working directory inside the container COPY . .# Build the Go application RUN go build -o abc ./main# Add executable permission to the main binary RUN chmod x ./abc# Expose the port the application runs on EXPOSE 8888 8080# Define the command to run the application CMD [./abc] go.mod module testproject12go 1.21.4
http://wiki.neutronadmin.com/news/272077/

相关文章:

  • 网站热力图用ps怎么做网站ftp地址是什么
  • ps做网站导航条富阳区住房与建设局网站
  • 公司网站怎么建立优化体系手机制作游戏的软件
  • 一级a做爰片手机电影网站罗定网站建设
  • 专业的盐城网站开发运营推广计划
  • 深圳网站开发培训网站建设的潜规则
  • 企网站建设深圳送花网站哪个好
  • 购物网站建设新闻有哪些网站适合大学生做兼职
  • 跨境电商建站公司坊网站建设
  • 绿色网站风格软文代写文案
  • 做净化行业需要知道的网站怎么把WordPress和域名解绑
  • 企业网站怎么收录好的企业管理网站
  • h5网站制作接单网店出租网站程序
  • 东莞响应式网站ei网站怎么兼做
  • 水利建设专项收入在什么网站上申报wordpress页面添加自定义字段
  • 网站安全防护找谁做优化软件哪个好
  • 长春网站建设找新生科技做设计找素材的 网站有哪些
  • 做网站潍坊广告公司宣传语
  • 一个网站如何挣钱开源低代码平台
  • 福州网站设计公司移动开发是干什么的
  • 上饶建设网站局域网站点建设方案
  • 做网站整理信息的表格个人网页设计图片素材
  • 网站管理建站南昌seo全网营销
  • php mysql网站开发全程实例 下载网站常用的js效果
  • 电子商务网站预算模板怎么采集网站内容
  • 个人网站 前置审批深圳营销网站建站公司
  • 徐州机票网站开发html5播放器
  • 注册网站需要营业执照吗嘉兴商城网站开发设计
  • 网站建设的作用是什么单页营销式网站模板下载
  • 网站转入备案重庆做网站制作公司