Last active
October 14, 2015 04:04
-
-
Save inaz2/672da97f01081ccd02b6 to your computer and use it in GitHub Desktop.
using socket in golang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"log" | |
"net" | |
) | |
func main() { | |
conn, err := net.Dial("tcp", "www.google.com:80") | |
if err != nil { | |
log.Fatal(err) | |
} | |
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n") | |
buf := make([]byte, 8192) | |
status, err := conn.Read(buf) | |
if status > 0 { | |
fmt.Println(string(buf)) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ nm -n hello | |
0000000000400c00 T main.main | |
0000000000400c00 T text | |
0000000000400ef0 T main.init | |
0000000000400f40 T type..hash.[1]interface {} | |
0000000000400ff0 T type..eq.[1]interface {} | |
00000000004010c0 T runtime.(*TypeAssertionError).RuntimeError | |
00000000004010d0 T runtime.(*TypeAssertionError).Error | |
00000000004012f0 T runtime.newTypeAssertionError | |
0000000000401440 T runtime.errorString.RuntimeError | |
0000000000401450 T runtime.errorString.Error | |
00000000004014c0 T runtime.newErrorString | |
0000000000401520 T runtime.errorCString.RuntimeError | |
0000000000401530 T runtime.errorCString.Error | |
00000000004015b0 T runtime.newErrorCString | |
00000000004015d0 T runtime.printany | |
0000000000401820 T runtime.panicwrap | |
0000000000401960 T runtime.(*Func).Name | |
00000000004019a0 T runtime.(*Func).Entry | |
00000000004019e0 T runtime.(*Func).FileLine | |
0000000000401a50 T runtime.GOROOT | |
0000000000401ab0 T runtime.init·1 | |
0000000000401b40 T runtime.gc_m_ptr | |
0000000000401b60 T runtime.gc_itab_ptr | |
0000000000401b80 T runtime.init | |
0000000000401bd0 T type..hash.runtime.TypeAssertionError | |
0000000000401ce0 T type..eq.runtime.TypeAssertionError | |
0000000000401e50 T runtime.(*errorString).RuntimeError | |
0000000000401ef0 T runtime.(*errorString).Error | |
0000000000401fd0 T runtime.(*errorCString).RuntimeError | |
0000000000402060 T runtime.(*errorCString).Error | |
0000000000402110 T type..hash.runtime._defer | |
00000000004021e0 T type..eq.runtime._defer | |
00000000004022f0 T type..hash.runtime._panic | |
0000000000402340 T type..eq.runtime._panic | |
00000000004023d0 T type..hash.runtime.g | |
0000000000402530 T type..eq.runtime.g | |
00000000004026e0 T type..hash.runtime.mcachelist | |
0000000000402730 T type..eq.runtime.mcachelist | |
0000000000402760 T type..hash.[61]runtime.mcachelist | |
0000000000402810 T type..eq.[61]runtime.mcachelist | |
0000000000402890 T type..hash.runtime.mcache | |
00000000004029a0 T type..eq.runtime.mcache | |
0000000000402ab0 T type..hash.runtime.p | |
0000000000402b80 T type..eq.runtime.p | |
0000000000402c90 T type..hash.struct { Size uint32; Mallocs uint64; Frees uint64 } | |
0000000000402d60 T type..eq.struct { Size uint32; Mallocs uint64; Frees uint64 } | |
0000000000402db0 T type..hash.[61]struct { Size uint32; Mallocs uint64; Frees uint64 } | |
0000000000402e60 T type..eq.[61]struct { Size uint32; Mallocs uint64; Frees uint64 } | |
0000000000402ef0 T type..hash.runtime.MemStats | |
0000000000402f80 T type..eq.runtime.MemStats | |
0000000000403080 T runtime.memhash | |
0000000000403120 T runtime.memequal | |
0000000000403180 T runtime.memprint | |
(snip) | |
$ objdump -d hello | |
hello: file format elf64-x86-64 | |
Disassembly of section .text: | |
0000000000400c00 <main.main>: | |
400c00: 64 48 8b 0c 25 f0 ff mov rcx,QWORD PTR fs:0xfffffffffffffff0 | |
400c07: ff ff | |
400c09: 48 8d 44 24 c8 lea rax,[rsp-0x38] | |
400c0e: 48 3b 01 cmp rax,QWORD PTR [rcx] | |
400c11: 77 07 ja 400c1a <main.main+0x1a> | |
400c13: e8 48 35 02 00 call 424160 <runtime.morestack00> | |
400c18: eb e6 jmp 400c00 <main.main> | |
400c1a: 48 81 ec b8 00 00 00 sub rsp,0xb8 | |
400c21: 48 8d 1c 25 50 e2 50 lea rbx,ds:0x50e250 | |
400c28: 00 | |
400c29: 48 8d 2c 24 lea rbp,[rsp] | |
400c2d: 48 89 ef mov rdi,rbp | |
400c30: 48 89 de mov rsi,rbx | |
400c33: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400c35: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400c37: 48 8d 1c 25 c0 eb 51 lea rbx,ds:0x51ebc0 | |
400c3e: 00 | |
400c3f: 48 8d 6c 24 10 lea rbp,[rsp+0x10] | |
400c44: 48 89 ef mov rdi,rbp | |
400c47: 48 89 de mov rsi,rbx | |
400c4a: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400c4c: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400c4e: e8 dd 9d 03 00 call 43aa30 <net.Dial> | |
400c53: 48 8b 5c 24 20 mov rbx,QWORD PTR [rsp+0x20] | |
400c58: 48 89 5c 24 68 mov QWORD PTR [rsp+0x68],rbx | |
400c5d: 48 8b 5c 24 28 mov rbx,QWORD PTR [rsp+0x28] | |
400c62: 48 89 5c 24 70 mov QWORD PTR [rsp+0x70],rbx | |
400c67: 48 8b 4c 24 30 mov rcx,QWORD PTR [rsp+0x30] | |
400c6c: 48 8b 54 24 38 mov rdx,QWORD PTR [rsp+0x38] | |
400c71: 48 83 f9 00 cmp rcx,0x0 | |
400c75: 0f 84 97 00 00 00 je 400d12 <main.main+0x112> | |
400c7b: 48 8d 7c 24 58 lea rdi,[rsp+0x58] | |
400c80: 48 31 c0 xor rax,rax | |
400c83: 48 ab stos QWORD PTR es:[rdi],rax | |
400c85: 48 ab stos QWORD PTR es:[rdi],rax | |
400c87: 48 8d 5c 24 58 lea rbx,[rsp+0x58] | |
400c8c: 48 89 5c 24 50 mov QWORD PTR [rsp+0x50],rbx | |
400c91: 48 c7 84 24 a8 00 00 mov QWORD PTR [rsp+0xa8],0x1 | |
400c98: 00 01 00 00 00 | |
400c9d: 48 c7 84 24 b0 00 00 mov QWORD PTR [rsp+0xb0],0x1 | |
400ca4: 00 01 00 00 00 | |
400ca9: 48 8b 5c 24 50 mov rbx,QWORD PTR [rsp+0x50] | |
400cae: 48 89 9c 24 a0 00 00 mov QWORD PTR [rsp+0xa0],rbx | |
400cb5: 00 | |
400cb6: 48 83 bc 24 a0 00 00 cmp QWORD PTR [rsp+0xa0],0x0 | |
400cbd: 00 00 | |
400cbf: 0f 84 16 02 00 00 je 400edb <main.main+0x2db> | |
400cc5: 48 89 0c 24 mov QWORD PTR [rsp],rcx | |
400cc9: 48 89 54 24 08 mov QWORD PTR [rsp+0x8],rdx | |
400cce: e8 fd 8c 00 00 call 4099d0 <runtime.convI2E> | |
400cd3: 48 8d 5c 24 10 lea rbx,[rsp+0x10] | |
400cd8: 48 8b bc 24 a0 00 00 mov rdi,QWORD PTR [rsp+0xa0] | |
400cdf: 00 | |
400ce0: 48 89 de mov rsi,rbx | |
400ce3: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400ce5: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400ce7: 48 8b 9c 24 a0 00 00 mov rbx,QWORD PTR [rsp+0xa0] | |
400cee: 00 | |
400cef: 48 89 1c 24 mov QWORD PTR [rsp],rbx | |
400cf3: 48 8b 9c 24 a8 00 00 mov rbx,QWORD PTR [rsp+0xa8] | |
400cfa: 00 | |
400cfb: 48 89 5c 24 08 mov QWORD PTR [rsp+0x8],rbx | |
400d00: 48 8b 9c 24 b0 00 00 mov rbx,QWORD PTR [rsp+0xb0] | |
400d07: 00 | |
400d08: 48 89 5c 24 10 mov QWORD PTR [rsp+0x10],rbx | |
400d0d: e8 7e 8f 03 00 call 439c90 <log.Fatal> | |
400d12: 48 c7 04 24 c0 40 4e mov QWORD PTR [rsp],0x4e40c0 | |
400d19: 00 | |
400d1a: 48 8b 5c 24 68 mov rbx,QWORD PTR [rsp+0x68] | |
400d1f: 48 89 5c 24 08 mov QWORD PTR [rsp+0x8],rbx | |
400d24: 48 8b 5c 24 70 mov rbx,QWORD PTR [rsp+0x70] | |
400d29: 48 89 5c 24 10 mov QWORD PTR [rsp+0x10],rbx | |
400d2e: e8 dd 8c 00 00 call 409a10 <runtime.convI2I> | |
400d33: 48 8d 5c 24 18 lea rbx,[rsp+0x18] | |
400d38: 48 8d 2c 24 lea rbp,[rsp] | |
400d3c: 48 89 ef mov rdi,rbp | |
400d3f: 48 89 de mov rsi,rbx | |
400d42: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400d44: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400d46: 48 8d 1c 25 40 82 51 lea rbx,ds:0x518240 | |
400d4d: 00 | |
400d4e: 48 8d 6c 24 10 lea rbp,[rsp+0x10] | |
400d53: 48 89 ef mov rdi,rbp | |
400d56: 48 89 de mov rsi,rbx | |
400d59: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400d5b: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400d5d: 48 8d 7c 24 20 lea rdi,[rsp+0x20] | |
400d62: 48 31 c0 xor rax,rax | |
400d65: 48 ab stos QWORD PTR es:[rdi],rax | |
400d67: 48 ab stos QWORD PTR es:[rdi],rax | |
400d69: 48 ab stos QWORD PTR es:[rdi],rax | |
400d6b: e8 f0 79 02 00 call 428760 <fmt.Fprintf> | |
400d70: 48 c7 04 24 80 fe 4b mov QWORD PTR [rsp],0x4bfe80 | |
400d77: 00 | |
400d78: 48 c7 44 24 08 00 20 mov QWORD PTR [rsp+0x8],0x2000 | |
400d7f: 00 00 | |
400d81: 48 c7 44 24 10 00 20 mov QWORD PTR [rsp+0x10],0x2000 | |
400d88: 00 00 | |
400d8a: e8 e1 a4 01 00 call 41b270 <runtime.makeslice> | |
400d8f: 48 8b 54 24 18 mov rdx,QWORD PTR [rsp+0x18] | |
400d94: 48 8b 4c 24 20 mov rcx,QWORD PTR [rsp+0x20] | |
400d99: 48 8b 44 24 28 mov rax,QWORD PTR [rsp+0x28] | |
400d9e: 48 89 94 24 88 00 00 mov QWORD PTR [rsp+0x88],rdx | |
400da5: 00 | |
400da6: 48 89 54 24 08 mov QWORD PTR [rsp+0x8],rdx | |
400dab: 48 89 8c 24 90 00 00 mov QWORD PTR [rsp+0x90],rcx | |
400db2: 00 | |
400db3: 48 89 4c 24 10 mov QWORD PTR [rsp+0x10],rcx | |
400db8: 48 89 84 24 98 00 00 mov QWORD PTR [rsp+0x98],rax | |
400dbf: 00 | |
400dc0: 48 89 44 24 18 mov QWORD PTR [rsp+0x18],rax | |
400dc5: 48 8b 5c 24 70 mov rbx,QWORD PTR [rsp+0x70] | |
400dca: 48 89 1c 24 mov QWORD PTR [rsp],rbx | |
400dce: 48 8b 5c 24 68 mov rbx,QWORD PTR [rsp+0x68] | |
400dd3: 48 8b 5b 30 mov rbx,QWORD PTR [rbx+0x30] | |
400dd7: ff d3 call rbx | |
400dd9: 48 8b 44 24 20 mov rax,QWORD PTR [rsp+0x20] | |
400dde: 48 8b 5c 24 28 mov rbx,QWORD PTR [rsp+0x28] | |
400de3: 48 8b 5c 24 30 mov rbx,QWORD PTR [rsp+0x30] | |
400de8: 48 83 f8 00 cmp rax,0x0 | |
400dec: 0f 8e d5 00 00 00 jle 400ec7 <main.main+0x2c7> | |
400df2: 48 8d 7c 24 78 lea rdi,[rsp+0x78] | |
400df7: 48 31 c0 xor rax,rax | |
400dfa: 48 ab stos QWORD PTR es:[rdi],rax | |
400dfc: 48 ab stos QWORD PTR es:[rdi],rax | |
400dfe: 48 8d 5c 24 78 lea rbx,[rsp+0x78] | |
400e03: 48 89 5c 24 50 mov QWORD PTR [rsp+0x50],rbx | |
400e08: 48 c7 84 24 a8 00 00 mov QWORD PTR [rsp+0xa8],0x1 | |
400e0f: 00 01 00 00 00 | |
400e14: 48 c7 84 24 b0 00 00 mov QWORD PTR [rsp+0xb0],0x1 | |
400e1b: 00 01 00 00 00 | |
400e20: 48 8b 5c 24 50 mov rbx,QWORD PTR [rsp+0x50] | |
400e25: 48 89 9c 24 a0 00 00 mov QWORD PTR [rsp+0xa0],rbx | |
400e2c: 00 | |
400e2d: 48 83 bc 24 a0 00 00 cmp QWORD PTR [rsp+0xa0],0x0 | |
400e34: 00 00 | |
400e36: 0f 84 93 00 00 00 je 400ecf <main.main+0x2cf> | |
400e3c: 48 8b 9c 24 88 00 00 mov rbx,QWORD PTR [rsp+0x88] | |
400e43: 00 | |
400e44: 48 89 1c 24 mov QWORD PTR [rsp],rbx | |
400e48: 48 8b 9c 24 90 00 00 mov rbx,QWORD PTR [rsp+0x90] | |
400e4f: 00 | |
400e50: 48 89 5c 24 08 mov QWORD PTR [rsp+0x8],rbx | |
400e55: 48 8b 9c 24 98 00 00 mov rbx,QWORD PTR [rsp+0x98] | |
400e5c: 00 | |
400e5d: 48 89 5c 24 10 mov QWORD PTR [rsp+0x10],rbx | |
400e62: e8 19 13 02 00 call 422180 <runtime.slicebytetostring> | |
400e67: 48 8d 5c 24 18 lea rbx,[rsp+0x18] | |
400e6c: 48 8d 6c 24 08 lea rbp,[rsp+0x8] | |
400e71: 48 89 ef mov rdi,rbp | |
400e74: 48 89 de mov rsi,rbx | |
400e77: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400e79: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400e7b: 48 c7 04 24 20 43 4c mov QWORD PTR [rsp],0x4c4320 | |
400e82: 00 | |
400e83: e8 48 87 00 00 call 4095d0 <runtime.convT2E> | |
400e88: 48 8d 5c 24 18 lea rbx,[rsp+0x18] | |
400e8d: 48 8b bc 24 a0 00 00 mov rdi,QWORD PTR [rsp+0xa0] | |
400e94: 00 | |
400e95: 48 89 de mov rsi,rbx | |
400e98: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400e9a: 48 a5 movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi] | |
400e9c: 48 8b 9c 24 a0 00 00 mov rbx,QWORD PTR [rsp+0xa0] | |
400ea3: 00 | |
400ea4: 48 89 1c 24 mov QWORD PTR [rsp],rbx | |
400ea8: 48 8b 9c 24 a8 00 00 mov rbx,QWORD PTR [rsp+0xa8] | |
400eaf: 00 | |
400eb0: 48 89 5c 24 08 mov QWORD PTR [rsp+0x8],rbx | |
400eb5: 48 8b 9c 24 b0 00 00 mov rbx,QWORD PTR [rsp+0xb0] | |
400ebc: 00 | |
400ebd: 48 89 5c 24 10 mov QWORD PTR [rsp+0x10],rbx | |
400ec2: e8 f9 7b 02 00 call 428ac0 <fmt.Println> | |
400ec7: 48 81 c4 b8 00 00 00 add rsp,0xb8 | |
400ece: c3 ret | |
400ecf: 89 04 25 00 00 00 00 mov DWORD PTR ds:0x0,eax | |
400ed6: e9 61 ff ff ff jmp 400e3c <main.main+0x23c> | |
400edb: 89 04 25 00 00 00 00 mov DWORD PTR ds:0x0,eax | |
400ee2: e9 de fd ff ff jmp 400cc5 <main.main+0xc5> | |
... | |
(snip) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ go version | |
go version go1.2.1 linux/amd64 | |
$ go run hello.go | |
HTTP/1.0 302 Found | |
Cache-Control: private | |
Content-Type: text/html; charset=UTF-8 | |
Location: http://www.google.co.jp/?gfe_rd=cr&ei=BccdVt6QNqiT8QeegIGQDw | |
Content-Length: 261 | |
Date: Wed, 14 Oct 2015 03:07:49 GMT | |
Server: GFE/2.0 | |
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> | |
<TITLE>302 Moved</TITLE></HEAD><BODY> | |
<H1>302 Moved</H1> | |
The document has moved | |
<A HREF="http://www.google.co.jp/?gfe_rd=cr&ei=BccdVt6QNqiT8QeegIGQDw">here</A>. | |
</BODY></HTML> | |
$ go build hello.go | |
$ ./hello | |
HTTP/1.0 302 Found | |
Cache-Control: private | |
Content-Type: text/html; charset=UTF-8 | |
Location: http://www.google.co.jp/?gfe_rd=cr&ei=DccdVvL6OKKT8QengIGgDw | |
Content-Length: 261 | |
Date: Wed, 14 Oct 2015 03:07:57 GMT | |
Server: GFE/2.0 | |
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> | |
<TITLE>302 Moved</TITLE></HEAD><BODY> | |
<H1>302 Moved</H1> | |
The document has moved | |
<A HREF="http://www.google.co.jp/?gfe_rd=cr&ei=DccdVvL6OKKT8QengIGgDw">here</A>. | |
</BODY></HTML> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment