2013-10-20 13 views
0

같은 하드웨어에있는 두 응용 프로그램 사이에 기본 TCP 소켓을 설정하려고합니다. 이미 다른 랩톱 (서버 역할)과 파이썬 스크립트간에 작업 소켓이 있지만 다른 하나의 작업을 수행 할 수없는 것처럼 보입니다. 배경은 유선 LAN (인터넷 필요 없음)을 통해 네트워크를 실행하는 Rpi에 연결된 랩톱에서 사용자 인터페이스를 실행해야한다는 것입니다 (이 위치는 파이썬 스크립트와 사용자 인터페이스의 html 코드가 생방송입니다). 파이썬 스크립트의 사용자 인터페이스에서 사용자 입력에 액세스해야하므로 두 개의 스크립트 (PHP 및 Python) 사이에 소켓을 사용하여 데이터를 보내려고합니다. Rpi는 이미 별도의 시스템에 클라이언트 역할을하고 있으며 데이터는 소켓을 통해 행복하게 들어옵니다. PHP 스크립트에서 새 소켓을 만들고 (이 서버가 될 것 같음)이 소켓에서 클라이언트를 Python 스크립트로 작성합니다. 불행히도 작동하지 않습니다와 나는 점점 계속 : PHP와 Python TCP 소켓 연결이 거부되었습니다.

Traceback (most recent call last): 
File "/var/www/Pipe_Sock_v3.py",line 33, in <module> 
    tcpConfigSock.connect(ADDRCONFIG) 
File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 111] Connection refused 

PHP의 소켓

다음과 같이 코드가 생성 :

$host = 'aaa.aaa.aaa.aaa' #both PHP and python script at same IP address on Rpi 
$port = 8000; 
$sock = socket_create(AF_INET,SOCK_STREAM,0); 
socket_bind($sock,$host,$port); 
socket_listen($sock); 
socket_accept($sock); 

파이썬 코드 (기존의 소켓 코드도 포함되어 있습니다) :

HOST = 'bbb.bbb.bbb.bbb' #IP address of system I am already getting data from. 
HOSTCONFUG = 'aaa.aaa.aaa.aaa' #Rpi IP Address 
PORTCONFIG = 8000   #PHP socket port 
BUFSIZCONFIG = 4092 
ADDRCONFIG = (HOSTCONFIG,PORTCONFIG) #PHP script link 
PORTSYS = 6000    #existing system port 
BUFSIZSYS = 4092 
ADDRSYS = (HOST, PORTSYS) #existing system link 

tcpSysSock = socket(AF_INET, SOCK_STREAM) #existing system socket 
tcpConfigSock = socket(AF_INET, SOCK_STREAM) #non functioning PHP socket 
tcpSysSock.connect(ADDRSYS) 
tcpConfigSock.connect(ADDRCONFIG) 

나는 많은 다른 게시물, 책을 체크 아웃하고 그물을 트롤링하지만 내가 잘못 가고있는 곳을 볼 수없는 것 같습니다. TCP 네트워크는 각기 다른 소켓이 제공되는 한 동일한 시스템에서 서버와 클라이언트로 작동 할 수 있습니다. 도움이 될 것입니다, 지금 당분간 붙어있어.

답변

2

귀하의 PHP 코드는 socket_accept에 전화를 누락되었습니다

socket_accept($sock); 

socket_accept없이, PHP 스크립트는 클라이언트 연결을 기다리지 않고 socket_listen 후 종료됩니다.

+0

안녕하세요 falsetru, 만약 그게 문제가 있었으면 좋았을 텐데, 그 코드를 입력 할 때 나는 그 라인을 놓쳤다. 그래서 에러는 동일하다. – AimSkyward

+0

@AimSkyward, 알겠습니다. 전체 추적을 보여라. – falsetru

+0

Hey falsetru, 그냥 – AimSkyward

관련 문제