미국의 주를 소켓으로 읽고 구문 분석하기
소켓은 다른 모든 스트림과 마찬가지로, 스트림 작업을 사용하여 읽고 해석 할 수 있습니다.
텍스트 데이터를 포함하는 서버에 대한 연결을 엽니다.
In[1]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_14.png)
socket = SocketConnect["http://exampledata.wolfram.com"]
Out[1]=
![](assets.ko/read-and-parse-us-states-with-sockets/O_12.png)
미국의 주를 모두 포함하는 텍스트 파일에 대한 GET 요청을 포함하는 명령 행을 씁니다.
In[2]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_15.png)
WriteLine[socket, "GET /50states.txt HTTP/1.0 \n"]
응답의 제1행을 읽습니다.
In[3]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_16.png)
ReadLine[socket]
Out[3]=
![](assets.ko/read-and-parse-us-states-with-sockets/O_13.png)
나머지 행을 모두 읽습니다.
In[4]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_17.png)
output = ReadString[socket];
문자열의 중간을 조사하여 구분자로 새로운 줄 바꿈 된 주 목록의 처음을 찾습니다.
In[5]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_18.png)
StringTake[output, {277, 347}]
Out[5]=
![](assets.ko/read-and-parse-us-states-with-sockets/O_14.png)
SemanticImportString을 사용하여 출력을 구문 분석하고 구문 분석 할 수 없는 요소는 제거합니다.
In[6]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_19.png)
states = DeleteMissing[SemanticImportString[output]]
Out[6]=
![](assets.ko/read-and-parse-us-states-with-sockets/O_15.png)
실제로 모든 국가가 포함되어 있는지 확인합니다.
In[7]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_20.png)
Equal[Length[states],
Length[EntityList[
EntityClass["AdministrativeDivision", "USStatesAllStates"]]]]
Out[7]=
![](assets.ko/read-and-parse-us-states-with-sockets/O_16.png)
스트림을 닫습니다.
In[8]:=
![Click for copyable input](assets.ko/read-and-parse-us-states-with-sockets/In_21.png)
Close[socket]