figured id top-post on this one, since the original message was so long..
i recommend debugging with a tool like wireshark. that way you can
see whats in the packets going over the wire and hopefully it will lead
to a solution.
-nathan
On Dec 19, 2007 12:54 AM, vixle <[EMAIL PROTECTED]> wrote:
> this code doesn't interact with php client while with c++ based one it
> works just fine.
> .....anybody?
> #include <stdio.h>
> #include <winsock2.h>
> #include <iostream>
> #include <process.h>
> using namespace std;
> int i = 0;
> int ar = 0;
> const int is = 50;
> SOCKET stack[is];
> void clientserve(void* ws)
> {
> SOCKET wsocket = *(SOCKET*)ws;
> int fgotused = 0;
> char sendbuf[70];
> char recvbuf[70];
> int scnt = 0;
> ar++;
> int id = ar;
> while(scnt <= ar)
> {
> if(stack[scnt] == 0)
> {
> stack[scnt] = wsocket;
> id = scnt;
> fgotused = 1;
> scnt = 0;
> break;
> }
> scnt++;
> }
> if(fgotused == 0)
> stack[id] = wsocket;
> send(stack[id], "Server message: You are now successfuly connected.",
> 70,
> 0 );
> while(1)
> {
> scnt = 0;
> if(recv(wsocket, recvbuf, 70, 0 ) == SOCKET_ERROR)
> {
> if(WSAGetLastError() == WSAECONNRESET)
> {
> i--;
> stack[id] = 0;
> cout << "Client Disconnected." << endl;
> cout << "Clients connected: " << i << endl;
> closesocket(wsocket);
> return;
> }
> }
> if(recvbuf)
> {
> cout << recvbuf << endl;
> while(scnt <= ar)
> {
> if(scnt != id)
> send(stack[scnt], recvbuf, 70, 0);
> scnt++;
> }
> recvbuf = null;
> }
> }
> }
> void main()
> {
> WSADATA wsaData;
> int iResult = WSAStartup(MAKEWORD(2,2),&wsaData);
> if (iResult != NO_ERROR)
> printf("Error at WSAStartup()\n");
> SOCKET m_socket;
> m_socket = socket (AF_INET, SOCK_STREAM, 0);
> if (m_socket == INVALID_SOCKET)
> {
> printf("Error at socket(): %ld\n", WSAGetLastError());
> WSACleanup();
> return;
> }
> sockaddr_in service;
> service.sin_family = AF_INET;
> service.sin_addr.s_addr = inet_addr("127.0.0.1");
> service.sin_port = htons(27015);
> if (bind(m_socket,(SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR)
> {
> printf("bind() failed.\n");
> closesocket(m_socket);
> return;
> }
> if (listen(m_socket, 700) == SOCKET_ERROR)
> printf( "Error listening on socket.\n");
> SOCKET AcceptSocket;
> printf("Waiting for a client to connect...\n");
> while (AcceptSocket = accept(m_socket, NULL, NULL))
> {
> i++;
> cout << "Client Connected." << endl;
> cout << "Clients connected: " << i << endl;
> _beginthread(clientserve, 0, (void*)&AcceptSocket);
> }
> }
> ""vixle"" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
> > <?php
> >
> > /* Get the port for the WWW service. */
> > //$service_port = getservbyname('www', 'tcp');
> >
> > /* Get the IP address for the target host. */
> > //$address = gethostbyname('www.example.com');
> >
> > /* Create a TCP/IP socket. */
> > $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
> > //echo "Attempting to connect to '$address' on port '$service_port'...";
> > $result = socket_connect($socket, "127.0.0.1", "27015");
> >
> > socket_RECV($socket, $read, 300, null);
> > echo $read;
> > socket_close($socket);
> > ?>
> >
> > i have a daemon running on that port that sends a message when it's got
> a
> > client connected
> > but the script above doesn't output anything it just loads my cpu up to
> > 100 percent and thats it then it basically stops working. While i need
> it
> > to display the messages sent by server(daemon) to the user running the
> > script has anyone got any idea why it rejects to work? (yeah the daemon
> is
> > written in c++ if that matters)
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>