@@ -99,7 +99,6 @@ msgstr ""
99
99
"게임의 법칙입니다."
100
100
101
101
#: ../../howto/sockets.rst:47
102
- #, fuzzy
103
102
msgid ""
104
103
"They were invented in Berkeley as part of the BSD flavor of Unix. They "
105
104
"spread like wildfire with the internet. With good reason --- the "
@@ -126,6 +125,10 @@ msgid ""
126
125
"# now connect to the web server on port 80 - the normal http port\n"
127
126
"s.connect((\" www.python.org\" , 80))"
128
127
msgstr ""
128
+ "# INET, STREAMing 소켓을 만듭니다\n"
129
+ "s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n"
130
+ "# 이제 포트 80의 웹 서버에 연결합니다 - 일반적인 http 포트\n"
131
+ "s.connect((\" www.python.org\" , 80))"
129
132
130
133
#: ../../howto/sockets.rst:64
131
134
msgid ""
@@ -154,6 +157,12 @@ msgid ""
154
157
"# become a server socket\n"
155
158
"serversocket.listen(5)"
156
159
msgstr ""
160
+ "# INET, STREAMing 소켓을 만듭니다\n"
161
+ "serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n"
162
+ "# 소켓을 공개 호스트와 잘 알려진 포트에 바인드 합니다\n"
163
+ "serversocket.bind((socket.gethostname(), 80))\n"
164
+ "# 서버 소켓이 됩니다\n"
165
+ "serversocket.listen(5)"
157
166
158
167
#: ../../howto/sockets.rst:80
159
168
msgid ""
@@ -204,6 +213,13 @@ msgid ""
204
213
" ct = client_thread(clientsocket)\n"
205
214
" ct.run()"
206
215
msgstr ""
216
+ "while True:\n"
217
+ " # 외부로부터의 연결을 받아들입니다\n"
218
+ " (clientsocket, address) = serversocket.accept()\n"
219
+ " # 이제 clientsocket으로 뭔가 합니다\n"
220
+ " # 이 경우, 스레딩 서버인 것처럼 취급합니다\n"
221
+ " ct = client_thread(clientsocket)\n"
222
+ " ct.run()"
207
223
208
224
#: ../../howto/sockets.rst:106
209
225
msgid ""
@@ -388,6 +404,39 @@ msgid ""
388
404
" bytes_recd = bytes_recd + len(chunk)\n"
389
405
" return b''.join(chunks)"
390
406
msgstr ""
407
+ "class MySocket:\n"
408
+ " \"\"\" 시연용 클래스\n"
409
+ " - 효율성이 아니라 명확성을 위해 코드 되었습니다\n"
410
+ " \"\"\" \n"
411
+ "\n"
412
+ " def __init__(self, sock=None):\n"
413
+ " if sock is None:\n"
414
+ " self.sock = socket.socket(\n"
415
+ " socket.AF_INET, socket.SOCK_STREAM)\n"
416
+ " else:\n"
417
+ " self.sock = sock\n"
418
+ "\n"
419
+ " def connect(self, host, port):\n"
420
+ " self.sock.connect((host, port))\n"
421
+ "\n"
422
+ " def mysend(self, msg):\n"
423
+ " totalsent = 0\n"
424
+ " while totalsent < MSGLEN:\n"
425
+ " sent = self.sock.send(msg[totalsent:])\n"
426
+ " if sent == 0:\n"
427
+ " raise RuntimeError(\" socket connection broken\" )\n"
428
+ " totalsent = totalsent + sent\n"
429
+ "\n"
430
+ " def myreceive(self):\n"
431
+ " chunks = []\n"
432
+ " bytes_recd = 0\n"
433
+ " while bytes_recd < MSGLEN:\n"
434
+ " chunk = self.sock.recv(min(MSGLEN - bytes_recd, 2048))\n"
435
+ " if chunk == b'':\n"
436
+ " raise RuntimeError(\" socket connection broken\" )\n"
437
+ " chunks.append(chunk)\n"
438
+ " bytes_recd = bytes_recd + len(chunk)\n"
439
+ " return b''.join(chunks)"
391
440
392
441
#: ../../howto/sockets.rst:217
393
442
msgid ""
@@ -471,25 +520,27 @@ msgid ""
471
520
"processors (x86/AMD64, ARM, RISC-V), are little-endian, with the least "
472
521
"significant byte first - that same ``1`` would be ``01 00``."
473
522
msgstr ""
523
+ "바이너리 데이터를 소켓을 통해 전송하는 것은 완벽히 가능합니다. 가장 큰 문제점은 모든 기계가 바이너리 데이터에 대해 같은 형식을 "
524
+ "사용하는 것은 아니라는 점입니다. 예를 들어, `네트워크 바이트 순서 "
525
+ "<https://en.wikipedia.org/wiki/Endianness#Networking>`_\\ 는 빅 엔디안이며, 가장 높은"
526
+ " 자리가 먼저와서, 값이 ``1``\\ 인 16비트 정수는, 두 개의 16진수 바이트 ``00 01``\\ 이 됩니다. 그러나, "
527
+ "대부분의 일반적인 프로세서들(x86/AMD64, ARM, RISC-V)은 리틀 엔디안미며, 가장 낮은 자리가 먼저와서, 같은 "
528
+ "``1``\\ 은 ``01 00``\\ 이 됩니다."
474
529
475
530
#: ../../howto/sockets.rst:262
476
- #, fuzzy
477
531
msgid ""
478
532
"Socket libraries have calls for converting 16 and 32 bit integers - "
479
533
"``ntohl, htonl, ntohs, htons`` where \" n\" means *network* and \" h\" "
480
534
"means *host*, \" s\" means *short* and \" l\" means *long*. Where network "
481
535
"order is host order, these do nothing, but where the machine is byte-"
482
536
"reversed, these swap the bytes around appropriately."
483
537
msgstr ""
484
- "바이너리 데이터를 소켓을 통해 전송하는 것은 완벽히 가능합니다. 가장 큰 문제점은 모든 기계가 바이너리 데이터에 대해 같은 형식을 "
485
- "사용하는 것은 아니라는 점입니다. 예를 들어, 모토로라 칩은 값 1을 갖는 16비트 정수를 16진수 바이트 00 01로 나타냅니다."
486
- " 그러나 인텔과 DEC은 바이트 반전됩니다 - 같은 1은 01 00입니다. 소켓 라이브러리에는 16과 32비트 정수 변환을 위한 "
487
- "호출이 있습니다 - ``ntohl, htonl, ntohs, htons`` 여기서 \" n\" 은 *network*\\ 을 의미하고, "
488
- "\" h\" 는 *host*\\ 를 의미하고, \" s\" 는 *short*\\ 를 의미하고, \" l\" 은 *long*\\ 를 의미합니다. "
489
- "네트워크 순서가 호스트 순서인 곳에서는 아무것도 수행하지 않지만, 바이트 반전되는 기계에서는 바이트가 적절히 스와프됩니다."
538
+ "소켓 라이브러리에는 16과 32비트 정수 변환을 위한 호출이 있습니다 - ``ntohl, htonl, ntohs, htons`` "
539
+ "여기서 \" n\" 은 *network*\\ 을 의미하고, \" h\" 는 *host*\\ 를 의미하고, \" s\" 는 *short*\\ 를 "
540
+ "의미하고, \" l\" 은 *long*\\ 를 의미합니다. 네트워크 순서가 호스트 순서인 곳에서는 아무것도 수행하지 않지만, 바이트 "
541
+ "반전되는 기계에서는 바이트가 적절히 스와프됩니다."
490
542
491
543
#: ../../howto/sockets.rst:268
492
- #, fuzzy
493
544
msgid ""
494
545
"In these days of 64-bit machines, the ASCII representation of binary data"
495
546
" is frequently smaller than the binary representation. That's because a "
@@ -498,9 +549,9 @@ msgid ""
498
549
"would be 8. Of course, this doesn't fit well with fixed-length messages. "
499
550
"Decisions, decisions."
500
551
msgstr ""
501
- "오늘날의 32비트 기계에서는, 바이너리 데이터의 ASCII 표현이 바이너리 표현보다 작은 경우가 많습니다. 놀라울 정도로 많은 "
502
- "경우에, 이 모든 long이 값 0이나 1을 갖기 때문입니다. 문자열 \" 0\" 은 2바이트지만 바이너리는 4바이트입니다. 물론, "
503
- "이것은 고정 길이 메시지에는 적합하지 않습니다. 결정, 결정."
552
+ "오늘날의 64비트 기계에서는, 바이너리 데이터의 ASCII 표현이 바이너리 표현보다 작은 경우가 많습니다. 놀라울 정도로 많은 "
553
+ "경우에, 대부분의 정수는 값 0이나 1을 갖기 때문입니다. 문자열 `` \" 0\" `` 은 2바이트지만, 완전한 64비트 정수는 "
554
+ "8바이트입니다. 물론, 이것은 고정 길이 메시지에는 적합하지 않습니다. 결정, 결정."
504
555
505
556
#: ../../howto/sockets.rst:277
506
557
msgid "Disconnecting"
@@ -641,6 +692,12 @@ msgid ""
641
692
" potential_errs,\n"
642
693
" timeout)"
643
694
msgstr ""
695
+ "ready_to_read, ready_to_write, in_error = \\ \n"
696
+ " select.select(\n"
697
+ " potential_readers,\n"
698
+ " potential_writers,\n"
699
+ " potential_errs,\n"
700
+ " timeout)"
644
701
645
702
#: ../../howto/sockets.rst:352
646
703
msgid ""
0 commit comments