Mensajes: 594
Registro en: Nov 2007
Reputación:
60
Hablando de ofertas de trabajo para programadores, yo solo veo ofertas para java, java y más java D:
Mensajes: 4,328
Registro en: Dec 2009
Reputación:
41
(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.
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.
x071
What a beautiful Duwang!
Mensajes: 1,735
Registro en: Feb 2011
Reputación:
13
(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.
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.
Mensajes: 863
Registro en: May 2007
Reputación:
65
Bueno, me voy a una aldea perdida de Cuenca así que...
¡¡¡Feliz año!!!
Mensajes: 1,669
Registro en: Mar 2009
Reputación:
41
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.
Mensajes: 620
Registro en: Apr 2011
Reputación:
9
12-31-2011, 02:34 PM
(Este mensaje fue modificado por última vez en: 12-31-2011, 02:35 PM por Krash93.)
"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."
Mensajes: 1,735
Registro en: Feb 2011
Reputación:
13
(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.
Mensajes: 1,669
Registro en: Mar 2009
Reputación:
41
(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.
Mensajes: 11
Registro en: Aug 2011
Reputación:
3
Feliz navidad y espero que os llenéis la barriga a ensaladas
Mensajes: 8,990
Registro en: May 2007
Reputación:
149
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.
"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
|