Calificación:
  • 6 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
A nadie le importa una mierda, pero... v13
Hablando de ofertas de trabajo para programadores, yo solo veo ofertas para java, java y más java D:


[Imagen: yokoth9.jpg]
(12-30-2011, 01:34 PM)Reaper45 escribió:
(12-29-2011, 04:10 PM)chachibukai escribió: ¿Crear procesos hijo en linux? Visto. ¿En windows? Ni idea, a buscar.
¿Usar sockets en linux? Visto. ¿En windows? Ni idea, a buscar.
¿Comunicación entre procesos en linux? Visto. ¿En windows? Ni idea, a buscar.

Por aquí tengo el primer programa con sockets y multihilo que hice windows. Es una guarrada, pero fácil de entender. Échale un vistazo si quieres. Hay que linkearle al proyecto la librería libws2_32.a si usas un IDE basado en GCC o la ws2_32.lib si usas Visual Studio.

Spoiler: mostrar
Código:
/*By Reaper*/
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio2.h>
#include <process.h>
#include <ctype.h>

int conectar(unsigned short puerto, char* ip);
void desconectar(void);
void chat(void);
void hilouno(void *param);
void hilodos(void *param);

SOCKET so;
char sw, telnet='0';

int main(int argc, char *argv[])
{
    textcolor(LIGHTGREEN);
    if(argc==3||argc==4)
    {
        if(argc==4&&strcmp(argv[3], "--modo-telnet")!=0)
        printf("Opci\242n no reconocida [%s]\n", argv[3]);
        else
        {
            if(argc==4&&strcmp(argv[3], "--modo-telnet")==0)
            telnet='1';
            printf("Conectando...\n");
            if(conectar(atoi(argv[2]), argv[1])!=0)
            printf("Error de conexi\242n");
            else
            {
                printf("Conexi\242n establecida!\n");
                chat();
                printf("[Fin de la transmisi\242n]");
            }
        }
    }
    else printf("Modo de uso: conectar.exe [IP] [puerto] --modo-telnet (opcional)\nTecla ESC: Desconectar\n");
}

int conectar(unsigned short puerto, char* ip)
{
    WSADATA wsadata;
    SOCKADDR_IN destino;
    WSAStartup(0x0202, &wsadata);
    if(wsadata.wVersion!=0x0202) WSACleanup();
    destino.sin_family=AF_INET;
    destino.sin_port=htons(puerto);
    destino.sin_addr.s_addr=inet_addr(ip);
    so=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    return connect(so, (SOCKADDR *)&destino, sizeof(destino));
}

void desconectar(void)
{
    if(so) closesocket(so);
    WSACleanup();
}

void chat(void)
{
    HANDLE handle[2];
    int i=0;
    handle[0]=(HANDLE) _beginthread(hilouno, 0, &i);
    i++;
    handle[1]=(HANDLE) _beginthread(hilodos, 0, &i);
    WaitForMultipleObjects(2, handle, FALSE, INFINITE);
}

void hilouno(void *param)
{
    char caracter=0;
    while(sw==0)
    {
        caracter=_getch();
        if(caracter!=27&&caracter!=13) if(telnet=='0') putchar(caracter);
        if(caracter==13)
        {
            caracter=10;
            if(telnet=='0') putchar('\n');
        }
        if(caracter==27)
        {
            desconectar();
            sw='1';
            _endthread();
        }
        else
        if(caracter!=0)
        send(so, &caracter, 1, 0);
    }
    desconectar();
    sw='1';
    _endthread();
}

void hilodos(void *param)
{
    char caracter2;
    int err=0;
    while(sw==0)
    {
        err=recv(so, &caracter2, 1, 0);
        if(err==1)
        putchar(caracter2);
        if(err==-1||err==0)
        {
            desconectar();
            sw='1';
            _endthread();
        }
    }
    desconectar();
    sw='1';
    _endthread();
}

Pues muchas gracias, así al menos tendré una referencia. De todos modos, estoy viendo que hay cosas como la preparación del socket que no se diferencia tanto de lo que vi en linux, así que lo que me han contado igual es algo exagerado.
[Imagen: SillyWalk.jpg] [Imagen: Bl3yK0h.png]x071
What a beautiful Duwang!
(12-30-2011, 01:54 PM)shinoproon escribió: Hablando de ofertas de trabajo para programadores, yo solo veo ofertas para java, java y más java D:

Suerte tienes, java no está tan mal.

(12-30-2011, 03:27 PM)chachibukai escribió:
(12-30-2011, 01:34 PM)Reaper45 escribió:
(12-29-2011, 04:10 PM)chachibukai escribió: ¿Crear procesos hijo en linux? Visto. ¿En windows? Ni idea, a buscar.
¿Usar sockets en linux? Visto. ¿En windows? Ni idea, a buscar.
¿Comunicación entre procesos en linux? Visto. ¿En windows? Ni idea, a buscar.

Por aquí tengo el primer programa con sockets y multihilo que hice windows. Es una guarrada, pero fácil de entender. Échale un vistazo si quieres. Hay que linkearle al proyecto la librería libws2_32.a si usas un IDE basado en GCC o la ws2_32.lib si usas Visual Studio.

Spoiler: mostrar
Código:
/*By Reaper*/
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio2.h>
#include <process.h>
#include <ctype.h>

int conectar(unsigned short puerto, char* ip);
void desconectar(void);
void chat(void);
void hilouno(void *param);
void hilodos(void *param);

SOCKET so;
char sw, telnet='0';

int main(int argc, char *argv[])
{
    textcolor(LIGHTGREEN);
    if(argc==3||argc==4)
    {
        if(argc==4&&strcmp(argv[3], "--modo-telnet")!=0)
        printf("Opci\242n no reconocida [%s]\n", argv[3]);
        else
        {
            if(argc==4&&strcmp(argv[3], "--modo-telnet")==0)
            telnet='1';
            printf("Conectando...\n");
            if(conectar(atoi(argv[2]), argv[1])!=0)
            printf("Error de conexi\242n");
            else
            {
                printf("Conexi\242n establecida!\n");
                chat();
                printf("[Fin de la transmisi\242n]");
            }
        }
    }
    else printf("Modo de uso: conectar.exe [IP] [puerto] --modo-telnet (opcional)\nTecla ESC: Desconectar\n");
}

int conectar(unsigned short puerto, char* ip)
{
    WSADATA wsadata;
    SOCKADDR_IN destino;
    WSAStartup(0x0202, &wsadata);
    if(wsadata.wVersion!=0x0202) WSACleanup();
    destino.sin_family=AF_INET;
    destino.sin_port=htons(puerto);
    destino.sin_addr.s_addr=inet_addr(ip);
    so=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    return connect(so, (SOCKADDR *)&destino, sizeof(destino));
}

void desconectar(void)
{
    if(so) closesocket(so);
    WSACleanup();
}

void chat(void)
{
    HANDLE handle[2];
    int i=0;
    handle[0]=(HANDLE) _beginthread(hilouno, 0, &i);
    i++;
    handle[1]=(HANDLE) _beginthread(hilodos, 0, &i);
    WaitForMultipleObjects(2, handle, FALSE, INFINITE);
}

void hilouno(void *param)
{
    char caracter=0;
    while(sw==0)
    {
        caracter=_getch();
        if(caracter!=27&&caracter!=13) if(telnet=='0') putchar(caracter);
        if(caracter==13)
        {
            caracter=10;
            if(telnet=='0') putchar('\n');
        }
        if(caracter==27)
        {
            desconectar();
            sw='1';
            _endthread();
        }
        else
        if(caracter!=0)
        send(so, &caracter, 1, 0);
    }
    desconectar();
    sw='1';
    _endthread();
}

void hilodos(void *param)
{
    char caracter2;
    int err=0;
    while(sw==0)
    {
        err=recv(so, &caracter2, 1, 0);
        if(err==1)
        putchar(caracter2);
        if(err==-1||err==0)
        {
            desconectar();
            sw='1';
            _endthread();
        }
    }
    desconectar();
    sw='1';
    _endthread();
}

Pues muchas gracias, así al menos tendré una referencia. De todos modos, estoy viendo que hay cosas como la preparación del socket que no se diferencia tanto de lo que vi en linux, así que lo que me han contado igual es algo exagerado.

Contra más uses librerías "estándar" de C y menos llamadas al sistema, menos problemas tendrás. Porque francamente, el tema de las librerías es un rompecabezas en Windows.
Bueno, me voy a una aldea perdida de Cuenca así que...

¡¡¡Feliz año!!!
Ya está esto en "marcadores" para chuletas varias.

¿Alguien me puede explicar cuándo leches se le tiene que poner ahora la tilde a este para diferenciarlo de "por donde sale el sol"? Es que me encanta que los notables en vez de sobresalientes por las faltas de ortografía de mi época ahora sean normas nuevas de la R.A.E. para mermar el analfabetismo.
[Imagen: etf7ll.gif][Imagen: k4z9sw.jpg]
"Este" como punto cardinal o como determinante (es decir, cuando acompaña al nombre) no llevan tilde. Ej.: "Este tío está muy mal." , "El sol sale por el este".

"Éste" como pronombre sí lo lleva. Ej.: "¡Fíjate en éste!" , "Éste de aquí es mejor."
(12-31-2011, 02:25 PM)X51 escribió: Ya está esto en "marcadores" para chuletas varias.

¿Alguien me puede explicar cuándo leches se le tiene que poner ahora la tilde a este para diferenciarlo de "por donde sale el sol"? Es que me encanta que los notables en vez de sobresalientes por las faltas de ortografía de mi época ahora sean normas nuevas de la R.A.E. para mermar el analfabetismo.

Tú/tu, él/el, mí/mi. Los pronombres llevan tilde diacrítica para diferenciarlos de artículos y posesivos. Lo único que han hecho es extender la norma a otros casos similares.
(12-31-2011, 02:34 PM)Krash93 escribió: "Este" como punto cardinal o como determinante (es decir, cuando acompaña al nombre) no llevan tilde. Ej.: "Este tío está muy mal." , "El sol sale por el este".

"Éste" como pronombre sí lo lleva. Ej.: "¡Fíjate en éste!" , "Éste de aquí es mejor."

Vale, sigue igual que siempre pero no lo he enetendido en la descripción de la R.A.E.

Gracias.

[Imagen: etf7ll.gif][Imagen: k4z9sw.jpg]
Feliz navidad y espero que os llenéis la barriga a ensaladas Grin
Yo estoy en dieta macrobiótica. En fin de año sólo como pavo trufado... Aunque en nochebuena me calcé unas angulas que te cagas por las bragas. lulz
[Imagen: YpRAA7X.png]
"Es como el que se mataba a pajas con U-jin y hoy en día o es Boku no Piko o ni se le levanta." - AniList


Salto de foro:


Usuarios navegando en este tema: 194 invitado(s)