Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Shrick

#51
Tras haber dejado un post sin ninguna respuesta  :-( , empece a buscar como un loco por Google haber como podia hacerlo y ya sabeis el dicho, si quieres, puedes, lo que he hecho esta vez, es crear un servidor socket hecho en python con algunas funciones que se ejecutaran según las ordenes que le demos, según parece, al crear un GUI con Tkinter y teniendo sockets, te ves en una encrucijada pues tenemos dos búcles el de los sockets, para mantener la comunicación y el de la ventana gráfica (root.mainloop()), asi que la solución obvia seria ejecutar una y después otra por cada ciclo, para ello es necesario el uso de thread, que he aprendido a nivel básico como funciona hace un rato :xD , del PDF, Python para todos, y como no tengo ni idea de clases en python lo he adaptado como he podido, y ello me ha obligado a tener que entenderlo.

Funcionamiento:

Simplemente es un servidor socket y un cliente GUI con socket que interactuan, desde el cliente vas mandando comandos y el servidor los ejecuta en la máquina en la que esta ejecutandose. Solo he puesto unos cuantos comando inútiles para ver si funcionaba, y si hace, bastante bien.

Los comandos en cuestión son:

mostrar_os -> Muestra el sistema operativo del servidor
cmd pause -> Pausa una consola en Windows
echo HolaM -> Muestra "Hola Mundo" en la consola.

Código Fuente:

server.py:
Código (python) [Seleccionar]
#!/usr/bin/python

import socket
import os

s = socket.socket()
s.bind(("localhost", 9999))
s.listen(30)

sc, addr = s.accept()

sc.send("Bienvenido!")

while True:
recibido = sc.recv(255)
print "Recibido:", recibido
if recibido == "quit":
break
if recibido == "mostrar_os":
recibido = os.name
if recibido == "cmd pause":
os.system("pause")
if recibido == "echo HolaM":
os.system("echo \"Hola Mundo\"")
sc.send(recibido)

print "adios"

sc.close()
s.close()


client.py:
Código (python) [Seleccionar]
#!/usr/bin/python

from Tkinter import *
import socket
import threading

class App:
def __init__(self, master):
Texto = ""
frame = Frame(master)
frame.pack()

self.texto_chat = Text(frame)
self.texto_envio = Entry(frame)
self.boton_enviar = Button(frame, text="Enviar!", command=self.evento)

self.texto_chat.grid(row=1, column=1)
self.texto_envio.grid(row=2, column=1)
self.boton_enviar.grid(row=2, column=2,)

def evento(self):
Texto = self.texto_envio.get()
s.send(Texto)
self.texto_chat.insert(END, "Cliente -> " + Texto + "\n", END)

root = Tk()
application = App(root)

class socket_thread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)

def run(self):
while True:
mensaje = s.recv(255)
print "Server -> " + mensaje
application.texto_chat.insert(END, "Server -> " + mensaje + "\n", END)
#time.sleep(2)
if mensaje == "quit":
self.salir

def salir():
print "Saliendo..."
s.close()

s = socket.socket()
s.connect(("localhost", 9999))

sock = socket_thread()
sock.start()

root.mainloop()


Espero que sirva de algo esto que hice ;)

Si me dejan ponerle licencia que sea zlib, para que pase a dominio público y no tengas que darme ni reconocimientos ni créditos, si lo usaras en tus aplicaciones tanto libres como comerciales.
#52
Teóricamente sin filtros ni pollas, y con gráficos al minimo podria llegar a los >30 FPS, lo que si que me parece impresionante es que el con menos machine y demostrado tiene más FPS que yo, aun asi se note el progreso de Dolphin que antes de los 20 FPS no subias, ibas con ~7 FPS, como mucho.
#53
Vereis estaba probando para hacer una especie de chat, con un bot, me explico estoy haciendo un cliente y un server con sockets, en python y quiero que cuando le envie un string por medio de sockets al server este lo recoja lea una de las posibles opciones, envie un string, y el cliente muestre la info del string enviado por el server, espero que se entienda.

Server.py
#!/usr/bin/python

import socket

s = socket.socket()
s.bind(("localhost", 9999))
s.listen(30)

sc, addr = s.accept()

sc.send("Bienvenido!")

while True:
recibido = sc.recv(255)
print "Recibido:", recibido
if recibido == "quit":
      break
if recibido == "tonto":
      recibido = "Probando..."
sc.send(recibido)

print "adios"

sc.close()
s.close()


Client.py
#!/usr/bin/python

import socket
#import time

def salir():
print "adios"
s.close()

s = socket.socket()
s.connect(("localhost", 9999))

while True:
mensaje = s.recv(255)
#time.sleep(2)
mensaje = raw_input("> ")
s.send(mensaje)
if mensaje == "quit":
salir
if mensaje == "Probando....":
print mensaje


Soy un novato en esto de los sockets y python, haber si me lo podeis solucionar y asi podre meter el siguiente paso que es trastear con las librerias GUI, recogi parte del code mirando por google y documentación de python.
#54
Si que es cierto que tira bastante bien me va a mi que lo probe el otro dia a >20 FPS con los gráficos medio, y filtro bilineal

Mi PC:

Procesador:
Intel(R) Pentium(R) D CPU 3.40GHz
2400.000 MHz
L2: 2048 KB

RAM:
2048 MB

Tarjeta Gráfica:
Nvidia Point of View GeForce 8500 GT
#55
Se me ocurre la idea de hacer retrasar las transmisiones por que creo que no me deja por eso.

En cuanto CSocketMaster y CSocketPlus, le hechare un vistazo ;) .
#56
Si he mirado en lo de monografias y no me va lo tengo puesto asi:

Código (vb) [Seleccionar]
Private Sub bntSend_Click()
On Error GoTo errorSub

Dim i As Integer
Dim Max As Integer

Max = Winsock1.Bound
    i = 0
    For i = 0 To Max
    If Winsock1(i).State = sckConnected Then
    Winsock1(i).SendData (txtSend)
   
    txtLog = txtLog & i & vbCrLf
   
    End If
    Next
   
    txtLog = txtLog & "Servidor : " & txtSend & vbCrLf
    txtSend = ""

Exit Sub
errorSub:
MsgBox "Error : " & Err.Description
' cierra la conexión
Winsock1_Close (intMax)
End Sub


En Teoria deberia funcionar pero solo envia información al segundo cliente...
#57
Consegui algo haciendo y array/matriz de Winsocket mirando por hay, ahora tengo el problema, para enviar mensaje desde servidor a clientes.

Private Sub bntSend_Click()
On Error GoTo errorSub

Dim i As Integer

    i = 0
    While (i < intMax)
    Winsock1(i).SendData txtSend
   
    txtLog = txtLog & "Servidor : " & txtSend & vbCrLf
    txtSend = ""
   
    i = i + 1
   
    Wend

Exit Sub
errorSub:
MsgBox "Error : " & Err.Description
' cierra la conexión
Winsock1_Close (intMax)
End Sub


El code lo pille de recursosvb y lo del uso de array winsocket mirando en google.

El error es que necesito saber como se envia mensaje de servidor a clientes.

IMAGEN:

#58
Buenas tras ver algo de python y traducir alguna que otra aplicación de vb a python, me gustaría profundizar un poco más en vb, para luego trasladar lo aprendido a gambas.

Según he leído en el formulario, puedes meter un componente socket denominado Winsock o similar, que me permite conectarme con otro ordenador a través de Internet, luego también me pareció leer que solo se puede realizar una conexión por componente winsock.

Quiero saber si es posible a través de un winsock para hacer múltiples conexiones.

Espero que se me entienda.
#60
Programación Visual Basic / Re: OpenGL o DirectX
16 Septiembre 2008, 13:31 PM
No necesariamente tienes que aprender C, se que para programar gráficos tengo entendido que los mejores lenguajes son C/C++ y ASM, para cuellos de botella, sin embargo como veo que provienes Visual Basic, te va a costar mucho, adaptarte a C, así que yo creo que puedes ir desenganchandote de Visual Basic, utilizando una de sus alternativas, FreeBasic, que usa una sintaxis similar, además esta orientado a la creación de videojuegos, y vienen las librerias más usadas, con la instalación.

¿Que es FreeBasic?
Descarga: http://www.freebasic.net/index.php/details?page=download&category=bin&id=1
Documentación: http://www.freebasic.net/index.php/details?page=download&category=doc&id=1
IDE: http://www.freebasic.net/index.php/viewall?page=download&category=tool
¿Como programar un juego?, primera lección: http://www.freebasic.net/wiki/wikka.php?wakka=TutHowToProgGame1
Más Tutoriales: http://www.freebasic.net/wiki/wikka.php?wakka=CommunityTutorials

Es Open Source y maneja el estilo de Visual Basic, eso si no es un RAD, pero que te sirva y que tengas un buen nivel de inglés porque lo vas a necesitar, tanto para Visual Basic como para FreeBasic.