Como subir datos a server con C

Iniciado por Hacklinx, 12 Febrero 2014, 09:18 AM

0 Miembros y 1 Visitante están viendo este tema.

Hacklinx

Veo que tengo mucho que aprender en lo referente a sockets ahora me pondré a ello, ya puedo trabajar con sockets sin problemas, tengo apuntes para windows, asi que a darle.

Luego de los demás que habláis me pierdo bastante, vamos yo intentaré conectarme por http al puerto 80 del server, y allí intentaré subir algo, ya me las apañaré como, eso de enviar variables al score:

Score.php?Name=Pepe&Score=50&...

Entiendo, pero yo no quiero enviar variables, quiero enviar un archivo txt y meterlo en un directorio, y para ello tendré que crear un archivo.php que me recoja no se qué, y conectarme a ese archivo por el puerto 80 con sockets eso es lo que entendí saludos, y gracias.

A ponerse a sockets.. otra vez haha

Vaagish

Yo te recomendaría enviar los valores desde el juego y abrir un archivo de texto en el servidor para escritura,, le metes las variables y lo cerras ;) inclusive podes tener un txt por jugador,, aunque lo mas recomendable es usar base de datos..

Es mucho el texto? (En realidad el método POST según tengo entendido no tiene limite de tamaño, pero no creo que sea aconsejable enviar por ejemplo,, un libro jeje)

Saludos!!


eferion

Cita de: Vaagish en 12 Febrero 2014, 20:38 PM
Yo te recomendaría enviar los valores desde el juego y abrir un archivo de texto en el servidor para escritura,, le metes las variables y lo cerras ;) inclusive podes tener un txt por jugador,, aunque lo mas recomendable es usar base de datos..

Si usas un fichero compartido tienes que tener cuidado con la concurrencia para no machacar datos.

Cita de: Vaagish en 12 Febrero 2014, 20:38 PM
Es mucho el texto? (En realidad el método POST según tengo entendido no tiene limite de tamaño, pero no creo que sea aconsejable enviar por ejemplo,, un libro jeje)

El tamaño en POST se puede limitar en el servidor... en cualquier caso, si se envían ficheros grandes también tienes como tope el timeout de la conexión... lo que salte antes te fastidia la subida.

Vaagish

CitarEl tamaño en POST se puede limitar en el servidor... en cualquier caso, si se envían ficheros grandes también tienes como tope el timeout de la conexión... lo que salte antes te fastidia la subida.

Mmm.. cierto.. entonces a usar BD,, aparte es mas pro jejeje

ivancea96

Si solo son puntuaciones, podrías considerar enviarlas con method GET, y guardarlas todas en un solo archivo.

Eso claro, si son datos de poco tamaño.

eferion

A mí lo que no me gusta de trabajar con archivos es que tienen dos inconvenientes:

* Hay que tener cuidado con la concurrencia.
* Como el algoritmo se tuerza un poco vas a estropear todo el fichero

Yo personalmente prefiero BD... además con PHP es sumamente fácil trabajar con MySql

Vaagish

Sin duda lo mejor es usar BD, va a poder realizar búsquedas sumamente simples y mostrar los resultados por jugador, por equipo, por tiempo,, bue.. lo que quiera.. aunque si hablamos de un juego "profesional" deben tener sus propios servidores, con aplicaciones que procesan esa información.. yo tengo un proyecto armado en Blitz3D (un FPS), y por sockets enviaba las posiciones de los players a un script PHP que se encarga de reenviar esas coordenadas a los demás jugadores,, era un proceso muy lento,, extremadamente lento y al final terminaban desfasándose los jugadores en la pantalla..

Saludos!!

ivancea96

En algo sencillo, aunque menos recomendable, usar un simple fichero de texto plano siempre es una opción.

Da más facilidad en la lectura, y más tiempo para centrarte en el juego, en vez de en el servidor.

Vaagish

Si,, pero fíjate que yo siquiera guardo los datos,, solo los reenvío, la demora del juego depende de la velocidad del servidor en interpretar la información, interpretar el php, y enviar de vuelta a los demás jugadores.. así mismo era muy lento,, para un juego de ajedrez no supone un problema,, pero para un fps,, pss.. jeje
había "inventado" un algoritmo que ahora no recuerdo (tendría que mirar el code) que era creo yo lo mas compacto que se podía hacer para enviar los datos,, enviaba desde un cliente una ecuación (si se quiere llamar así) donde estaba la información "comprimida", los clientes descomponían la ecuación y ahí tenían las coordenadas.. todo eso para ahorrar trafico,, así mismo no funciono..

Saludos!