모두의 프린터는 어떠한 경우에도 회원가입, 카드결제를 요구하지 않습니다.

웹페이지 생성,호출

아래는 예제로 사용된 코드들 입니다. 같은 파일명으로 파일들 생성 하셔서 복붙 하시면 되겠습니다.

main.go

package main

import (
	"fmt"

	"github.com/phayes/freeport"
)

var (
	gWebServerPort int
)

func main() {
	port, portErr := freeport.GetFreePort()

	if portErr != nil {
		fmt.Println(portErr.Error())
		return
	}

	gWebServerPort = port

	webServ("127.0.0.1", gWebServerPort)
}

webserv.go

package main

import (
	"fmt"
	"net/http"
	"time"
)

func webPageProc(w http.ResponseWriter, r *http.Request) {
	http.ServeFile(w, r, ".\\www\\index.html")
}

func webServ(hostname string, servPort int) {
	http.HandleFunc("/", webPageProc)

	servAddr := fmt.Sprintf("%s:%d", hostname, servPort)

	fmt.Println(servAddr)

	// 웹페이지를 오픈하기 위한 고루틴
	go func() {
		// 1초간 딜레이
		time.Sleep(1 * time.Second)
		openMyWebPage()
	}()

	err := http.ListenAndServe(servAddr, nil)

	//

	if err != nil {
		fmt.Println("웹 서버 실행 실패 ")
	}
}

utils.go

package main

import (
	"fmt"
	"os/exec"
	"strings"
	"syscall"
)

func execCommandStart(name string, arg ...string) error {
	cmd := exec.Command(name, arg...)

	cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
	err := cmd.Start()
	return err
}

func execCommandRun(name string, arg ...string) error {
	cmd := exec.Command(name, arg...)

	cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
	err := cmd.Run()
	return err
}

func openWeb(url string) {
	r := strings.NewReplacer("&", "^&")
	stripURL := r.Replace(url)

	err := execCommandStart("rundll32.exe", "url.dll,FileProtocolHandler", stripURL)

	if err != nil {
		// 오류 출력
		fmt.Println(err.Error())
	}
}

func openMyWebPage() {
	addr := fmt.Sprintf("http://127.0.0.1:%d", gWebServerPort)
	openWeb(addr)
}

%d 블로거가 이것을 좋아합니다: