나는 파이썬과 네트워크 프로그래밍에 대해 많이 모른다. 현재 사용자가 보낸 문자 메시지를 수신하고 Google 검색 API에서 일부 정보를 가져와 사용자에게 문자 메시지를 통해 결과를 반환 할 수있는 간단한 응용 프로그램을 구현하려고합니다. 이 응용 프로그램은 사용자 메시지를 계속 듣고 즉시 회신합니다.파이썬에서 수신 소켓을 실행할 때 jython 사용에 관한 질문
사용자가 문자 메시지를 보내려면 어떻게해야합니까? 그것은 중국의 모바일 공급 업체로부터 fetion이라는 프로그램입니다. 인스턴트 통신 도구와 마찬가지로 클라이언트 측 페션은 SMS를 수신/전송하기 위해 모바일을 사용하는 다른 사람들과 메시지를주고받을 수 있습니다.
나는 fetion 프로그램을 시뮬레이트하는 오픈 소스 파이썬 프로그램을 사용하고 있습니다. 따라서 기본적으로이 Python 프로그램을 사용하여 SMS를 통해 휴대 전화를 사용하는 다른 사람들과 의견을 나눌 수 있습니다.
내 핵심 프로그램은 java를 기반으로하므로이 Python 프로그램을 Java 환경에 적용해야합니다. 나는 자이 썬을 사용하고 있으며, 이제는 자바 코드 라인을 통해 사용자에게 메시지를 보낼 수있다.
하지만 진짜 질문은 SMS를 통해 사용자로부터 수신하는 프로세스입니다. 파이썬 코드에서는 새로운 스레드가 생성되어 사용자의 소리를 계속 듣습니다. 파이썬에서 확인을해야하지만, 내가 자이 썬에서 유사한 프로세스를 실행할 때, 다음과 같은 예외가 발생합니다
다음과Exception in thread Thread:Traceback (most recent call last):
File "D:\jython2.5.1\Lib\threading.py", line 178, in _Thread__bootstrap
self.run()
File "<iostream>", line 1389, in run
File "<iostream>", line 1207, in receive
File "<iostream>", line 1207, in receive
File "<iostream>", line 150, in recv
File "D:\jython2.5.1\Lib\select.py", line 223, in native_select
pobj.register(fd, POLLIN)
File "D:\jython2.5.1\Lib\select.py", line 104, in register
raise _map_exception(jlx)
error: (20000, 'socket must be in non-blocking mode')
파이썬 코드의 라인 (150)이 될 때 : 때문에 I의
def recv(self,timeout=False):
if self.login_type == "HTTP":
time.sleep(10)
return self.get_offline_msg()
pass
else:
if timeout:
infd,outfd,errfd = select([self.__sock,],[],[],timeout)//<---line 150 here
else:
infd,outfd,errfd = select([self.__sock,],[],[])
if len(infd) != 0:
ret = self.__tcp_recv()
num = len(ret)
d_print(('num',),locals())
if num == 0:
return ret
if num == 1:
return ret[0]
for r in ret:
self.queue.put(r)
d_print(('r',),locals())
if not self.queue.empty():
return self.queue.get()
else:
return "TimeOut"
을 파이썬, 특히 소켓 부분에 익숙하지 않고 자이 썬에서 새로운 것을 사용하기 때문에 나는 정말로 당신의 도움이나 조언이나 설명이 필요하다.
대단히 감사합니다!