2013-08-18 2 views
0

손쉬운 문제 : 인쇄 요청을 가로 채고 작업 내의 데이터를 수정하여 내용을 추가합니다. 지금까지PHP 소켓이 프린터 포트에서 연결을 수락 할 수 없습니다.

해결 방법 : 다음/IP 포트가 9100 2. 포트 9100에서 수신 대기 기본 소켓 서버를 작성 말할 1. 원시 TCP에 기본 프린터 리디렉션 윈도우 XP 시스템을 위해 일했다 솔루션의 연결이 발생하면이를 수락합니다. 3. 소켓에서 읽고 기본 프린터가 있던 실제 포트로 리디렉션되는 가상 프린터에 쓰기 전에 내용을 수정하십시오.

문제 : 1 단계와 2 단계가 Windows 7에서 작동하지 않는 것 같습니다. 누군가 도와 드릴 수 있습니까? 여기

소켓 서버 코드 (아주 기본) ...이 시점에서 그래서

<?php 
// set some variables 
$host = "127.0.0.1"; 
$port = 9100; 
// don't timeout! 
set_time_limit(0); 

if(($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) 
{ 
    echo "failed to create socket: ".socket_strerror($sock)."\n"; 
    exit(); 
} 

if(($ret = socket_bind($sock, $host, $port)) < 0) 
{ 
    echo "failed to bind socket: ".socket_strerror($ret)."\n"; 
    exit(); 
} 

if(($ret = socket_listen($sock, 0)) < 0) 
{ 
    echo "failed to listen to socket: ".socket_strerror($ret)."\n"; 
    exit(); 
} 

socket_set_nonblock($sock); 

echo "waiting for clients to connect\n"; 

while (true) 
{ 
    $connection = @socket_accept($sock); 
    if ($connection === false) 
    { 
     usleep(100); 
    }elseif ($connection > 0) 
    { 
     //handle_client($sock, $connection); 
    }else 
    { 
     echo "error: ".socket_strerror($connection); 
     die; 
    } 
} 

, 인쇄 작업이 기본 프린터로 일어날 때, 서버가 연결을 허용해야하지만 그것은 아니다 케이스. socket_create, socket_connect를 수행하고 socket_write를 보내는 기본 소켓 클라이언트는 정상적으로 작동합니다. 그러나 동일한 포트로 인쇄 작업을 보내면 같은 일이 발생하지 않습니다. 그것은 Windows XP에서 잘 작동합니다. 누군가 제발 도와 줄 수 있니?

+0

Windows 7에서는 기본적으로 IPV6 소켓이 프린터에서 사용됩니다. IPV6을 통해 IPV4를 선호하거나 IPV6 소켓을 만들려면 Microsoft Fixit을 실행하면됩니다. – svalivarthi

답변

0

Windows 7에서는 IPV6 소켓이 기본적으로 프린터에서 사용된다는 것을 알게되었습니다. IPV6을 통해 IPV4를 선호하거나 IPV6 소켓을 만들려면 Microsoft Fixit을 실행하면됩니다. - user2693294

관련 문제