fsockopen / C++

HOCOK

Guest
fsockopen / C++

У меня есть client.cpp , он отсылает серверу данный вот так:

send( client_socket, &size, 1, 0 );
send( client_socket, data, size, 0 );

как воидно,
СНАЧАЛА РАЗМЕР СТРОЧКИ (size),
ПОТОМ САМА СТРОЧКА (data).

как тоже самое зделать на пхп?
 

HOCOK

Guest
а ты точна уверен что именно так?

поскольку тут еше чета передаётся..
send( client_socket, &size, 1, 0 );
send( client_socket, data, size, 0 );

какиета цифры и ещё раз размер..

PHP:
$str = 'hello';
$fp = fsockopen('127.0.0.1',1234);
fwrite($fp,strlen($str));
fwrite($fp,$str);
так неработает
 

Demiurg

Guest
HOCOK
программист должен понимать, что он делает. "какиета цифры" - удел ламеров.
 

HOCOK

Guest
не я делал этот Си исходник..
Так че передовать?
 

Demiurg

Guest
>не я делал этот Си исходник..
это мы уже давено поняли.
тебе надо разобраться как все это работат и переписать на php. Или просто понять требования и написать самому.
 

HOCOK

Guest
да я проста не понемаю что он тут отсылает

send( client_socket, &size, 1, 0 );
send( client_socket, data, size, 0 );

и как отсылает, добовляет ли он спец символы или чтота ещё..
 

Demiurg

Guest
>да я проста не понемаю что он тут отсылает
и никто тут не понимает. Но у тебя есть приемущество, ты можешь посмотреть, что делает функция send.
 

Demiurg

Guest
>эта функция в С++ есть по дефалту
нет, ты ошибаешься
 

HOCOK

Guest
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#pragma comment( lib, "wsock32.lib" )

SOCKET client_socket, server_socket;
sockaddr_in client_addr, server_addr;
int err;
WSADATA wsadata;
WORD winsock_versionrequested = MAKEWORD( 1, 1 );

char test_size = 100;
char test_data[] = "Hello Server!!!";

int main( int argc, char* argv[] )
{
/* дальше иниц. Winsock и т д */
printf( "+Starting Winsock...\n" );
err = WSAStartup( winsock_versionrequested, &wsadata );
if (err)
{
return 0;
}
printf( "+Creating client socket...\n" );
client_socket = socket( AF_INET, SOCK_STREAM, 0 );
if (client_socket == INVALID_SOCKET)
{
return 0;
}

printf( "+Binding sockets...\n" );
client_addr.sin_family = AF_INET;
client_addr.sin_port = 0;
client_addr.sin_addr.s_addr = htonl( INADDR_ANY );
if (bind( client_socket, (LPSOCKADDR)&client_addr, sizeof( client_addr ) )== SOCKET_ERROR)
{
return 0;
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons( 8877 );
server_addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );

printf( "+Connecting to 127.0.0.1 on port 8877...\n" );
server_socket = connect( client_socket, (LPSOCKADDR)&server_addr, sizeof( server_addr ) );
if (server_socket == SOCKET_ERROR)
{
return 0;
}



send( client_socket, &test_size, 1, 0 );
send( client_socket, test_data, test_size, 0 );

printf( "OK\n" );

return 0;
}
тоже самое нада зделать на пхп
 

Demiurg

Guest
>тоже самое нада зделать на пхп
сколько платишь ?
 

fixxxer

К.О.
Партнер клуба
PHP:
$test_size = 100;
$test_data = "Hello Server!!!";

$f = fsockopen('127.0.0.1', 8877, $ern, $erd) or die($erd);
fwrite($f, chr($test_size) . $test_data);
echo "OK\n";
fclose($f);
Гони $50.

P.S. На си, кстати, тоже совершенно необязательно явно биндить клиентский сокет.
 
Сверху