php socket编程问题:由peer重置连接

时间:2016-02-29 10:13:16

标签: java php sockets websocket

我有一个php应用程序,它使用套接字连接到java应用程序。在java应用程序中,我们将超时设置为10秒。

我需要在应用程序中间处理大量数据。由于当我在处理后尝试使用套接字时,我收到了由对等方重置连接的套接字错误。

现在,当我尝试关闭(socket_shutdown)连接并重新打开连接时,收到错误传输端点未连接到socket_send,socket_receive。非常感谢有关此问题的任何指导。

注意:我尝试使用单例方法进行套接字连接。

1 个答案:

答案 0 :(得分:0)

我在PHP应用程序中使用大量套接字连接[每秒10个不同的PHP Apache线程到我自己编写的C ++服务器]。

这是我在PHP中使用的代码,它起作用:

$sIP = gethostbyname('MyDomain');

# create the socket
$iSocket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
if ($iSocket === FALSE )
{
    writeLogFile(sprintf("socket_create() failed: %s",
                    socket_strerror(socket_last_error())));
    exit;
}

# load some default values from the app table
$iTimeOut = 180
$iPort = 11211;

socket_set_option($iSocket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => $iTimeOut, "usec" => 0));
$iResult = socket_connect($iSocket, $sIP, $iPort);

if ( $iResult === FALSE )
{
    $sError = sprintf("<br>socket_connect(%d) failed with code %d: %s",
                    $iSocket, $iResult, socket_strerror(socket_last_error($iSocket)));
    writeLogFile($sError);
    die($sError);
    exit;
}

# $sHttpParameter has the value which has to be sent over the socket
socket_write($iSocket, $sHttpParameter, strlen($sHttpParameter));
# for my purpose the answer is just an OK/FAILED
$sAnswer = socket_read($iSocket, 1000);     
socket_close($iSocket);

您确定问题不是JAVA应用程序吗?