2012-06-21 3 views
0

내 설정이다.
외부 스크립트는 소켓 모듈을 사용하여 파이썬 명령을 다시 임베디드 파이썬에 보냅니다.파이썬 요청 객체 반환

self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

을 그리고 사용하여 명령을 보내 :
소켓은 다음 코드로 초기화됩니다

self.sock.send("print ('hello, world!')") 

이 순간에 아주 잘 노력하고 있습니다. 나는 원하는 모든 명령을 보내고 프로그램을 멋지게 제어 할 수있다.

내 질문 : 어떻게 정보를 다시 소켓으로 보낼 수 있습니까?
예를 들어 프로그램에 문자열 목록을 제공하도록 요청해야합니다. 하지만 임베디드 파이썬이 오픈 소켓을 통해 데이터를 다시 전송하는 방법을 파악하는데 어려움이 있습니까?
감사합니다.

+0

'print ("Hello world")'와 같은 명령의 출력을 소켓을 통해 반환하겠습니까? –

+0

@JoachimPileborg, 나는'str (45)'와 같은 다른 명령을 사용해야했다. – splodingsocks

답변

1

항상 양방향 소켓 통신이 가능합니다.

외부 파이썬이 뭔가를 보낼 때 항상 인수 중 하나가 당신이 뭔가를 요구하고 있음을 지정할 수있는 튜플을 보내십시오.

저를 예를 들어 보겠습니다,

설정 (. 동기 또는 비동기 프로젝트/응용 프로그램은 필요에 따라 달라집니다 모델 - 간단한 클라이언트 - 서버) 양방향 소켓 통신은

2.7은 다음과 같이 튜플을 전송 - 당신이 작동했다 당신이 보낸 명령 (의 출력을 원하는 것을 나타내는

(<command>, 1) 

1은 2.7로 다시 전송됩니다.

그래서, 2.6이 튜플을 받으면 튜플의 0 번째 위치는 항상 보내려는 명령을 나타내고, 1 번째 위치는 send back 인수를 나타냅니다.

간단한 if-else 조건을 사용하면이 값이 1인지 확인한 다음 결과를 2.7로 되돌릴 수 있습니다. 그렇지 않은 경우 그렇지 않습니다.

매우 간단한 논리입니다.

+0

답변 해 주셔서 감사합니다. 이것은 좋은 해결책처럼 들립니다. 소켓을 통해 물건을 보내기 전에 물건을 손으로 절취해야합니까? – splodingsocks

+0

예, 그렇게 생각합니다. 파이썬에서 소켓을 통해 객체를 보내려면, 수신 할 때 직렬화하고 수신 할 때 피클로 직렬화해야합니다. –

+0

감사합니다, @Sylar. – splodingsocks