大佬教程收集整理的这篇文章主要介绍了用golang解决 Flash AS3 的 socket 安全策略文件问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
代码如下:
</pre><pre>package main import ( "bufio" "fmt" "net" "os" "time" ) const ( Head = 4 ) var ( ClientMap map[int]net.Conn = make(map[int]net.Conn) ) func main() { fmt.Println(os.Args[0]) ip_port := "127.0.0.1:843" if len(os.Args) > 1 { ip_port = os.Args[1] } fmt.Println( "\nFlash AS 策略服务运行中...\n自动回应SocketXml端口(即843端口)的crossdomain.xml请求\n如需指定ip和端口,可以在程序启动时指定参数,格式如下\ngameserver843.exe 192.168.101.139:843","\n当前正在侦听",ip_port,"\n请不要关闭此窗口...") tcpaddr,err := net.ResolveTCpaddr("tcp4",ip_port) checkError(err) listener,err := net.ListenTCP("tcp",tcpaddr) checkError(err) clienTindex := 0 for { clienTindex++ conn,err := listener.Accept() if err != nil { conTinue } go handleClient(conn,clienTindeX) } } func handleClient(conn net.Conn,index int) { ClientMap[index] = conn fmt.Println("") fmt.Println("=======================") fmt.Println("新用户连接,来自: ",conn.RemoteAddr(),"index: ",indeX) fc := func() { time.Sleep(time.Second) //给客户端1秒的响应的时间,否则客户端有可能读不到数据就提前Close了 conn.Close() delete(ClientMap,indeX) fmt.Println("移除序号为: ",index,"的客户端,断开客户端的连接") fmt.Println("=======================") } defer fc() sendFirstmsg(conn) } func sendFirstmsg(conn net.Conn) { str := `<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYstem "/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <site-control permitted-cross-domain-policies="master-only"/> <allow-access-from domain="*" to-ports="*" /> </cross-domain-policy>` writer := bufio.NewWriter(conn) writer.WriteString(str) writer.Flush() fmt.Println("已经回应策略文件:crossdomain.xml") } func checkError(err error) { if err != nil { fmt.Println(err.Error()) os.Exit(1) } }
装好golang环境,然后直接 go run main.go 就行了。
当然,也可以直接下载我编译好的 exe 可执行文件。
下载页面如下:https://github.com/moketao/XmlSocket_843
以上是大佬教程为你收集整理的用golang解决 Flash AS3 的 socket 安全策略文件问题全部内容,希望文章能够帮你解决用golang解决 Flash AS3 的 socket 安全策略文件问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。