@@ -99,7 +99,6 @@ msgstr ""
9999"게임의 법칙입니다."
100100
101101#: ../../howto/sockets.rst:47
102- #, fuzzy
103102msgid ""
104103"They were invented in Berkeley as part of the BSD flavor of Unix. They "
105104"spread like wildfire with the internet. With good reason --- the "
@@ -126,6 +125,10 @@ msgid ""
126125"# now connect to the web server on port 80 - the normal http port\n"
127126"s.connect((\" www.python.org\" , 80))"
128127msgstr ""
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))"
129132
130133#: ../../howto/sockets.rst:64
131134msgid ""
@@ -154,6 +157,12 @@ msgid ""
154157"# become a server socket\n"
155158"serversocket.listen(5)"
156159msgstr ""
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)"
157166
158167#: ../../howto/sockets.rst:80
159168msgid ""
@@ -204,6 +213,13 @@ msgid ""
204213" ct = client_thread(clientsocket)\n"
205214" ct.run()"
206215msgstr ""
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()"
207223
208224#: ../../howto/sockets.rst:106
209225msgid ""
@@ -388,6 +404,39 @@ msgid ""
388404" bytes_recd = bytes_recd + len(chunk)\n"
389405" return b''.join(chunks)"
390406msgstr ""
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)"
391440
392441#: ../../howto/sockets.rst:217
393442msgid ""
@@ -471,25 +520,27 @@ msgid ""
471520"processors (x86/AMD64, ARM, RISC-V), are little-endian, with the least "
472521"significant byte first - that same ``1`` would be ``01 00``."
473522msgstr ""
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``\\ 이 됩니다."
474529
475530#: ../../howto/sockets.rst:262
476- #, fuzzy
477531msgid ""
478532"Socket libraries have calls for converting 16 and 32 bit integers - "
479533"``ntohl, htonl, ntohs, htons`` where \" n\" means *network* and \" h\" "
480534"means *host*, \" s\" means *short* and \" l\" means *long*. Where network "
481535"order is host order, these do nothing, but where the machine is byte-"
482536"reversed, these swap the bytes around appropriately."
483537msgstr ""
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+ "반전되는 기계에서는 바이트가 적절히 스와프됩니다."
490542
491543#: ../../howto/sockets.rst:268
492- #, fuzzy
493544msgid ""
494545"In these days of 64-bit machines, the ASCII representation of binary data"
495546" is frequently smaller than the binary representation. That's because a "
@@ -498,9 +549,9 @@ msgid ""
498549"would be 8. Of course, this doesn't fit well with fixed-length messages. "
499550"Decisions, decisions."
500551msgstr ""
501- "오늘날의 32비트 기계에서는, 바이너리 데이터의 ASCII 표현이 바이너리 표현보다 작은 경우가 많습니다. 놀라울 정도로 많은 "
502- "경우에, 이 모든 long이 값 0이나 1을 갖기 때문입니다. 문자열 \" 0\" 은 2바이트지만 바이너리는 4바이트입니다. 물론, "
503- "이것은 고정 길이 메시지에는 적합하지 않습니다. 결정, 결정."
552+ "오늘날의 64비트 기계에서는, 바이너리 데이터의 ASCII 표현이 바이너리 표현보다 작은 경우가 많습니다. 놀라울 정도로 많은 "
553+ "경우에, 대부분의 정수는 값 0이나 1을 갖기 때문입니다. 문자열 `` \" 0\" `` 은 2바이트지만, 완전한 64비트 정수는 "
554+ "8바이트입니다. 물론, 이것은 고정 길이 메시지에는 적합하지 않습니다. 결정, 결정."
504555
505556#: ../../howto/sockets.rst:277
506557msgid "Disconnecting"
@@ -641,6 +692,12 @@ msgid ""
641692" potential_errs,\n"
642693" timeout)"
643694msgstr ""
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)"
644701
645702#: ../../howto/sockets.rst:352
646703msgid ""
0 commit comments