ApOkAlizE
Desconectado
Mensajes: 150
¿sabes lo que vales? ¡consigue lo que te mereces!
|
Aquí dejo el trozo de codigo correspondiente als sockets. Y he linkeado al proyecto: libwsock32.a libws2_32.a libwxmsw28u.a
SERVIDOR:
#define _WIN32_WINNT 0x501 #include "windows.h" #include "winsock2.h" #include "ws2tcpip.h" #pragma comment(lib, "ws2_32.lib")
int main() { WSAData wsa; WORD Versio = MAKEWORD(2,1); WSAStartup(Versio, &wsa); SOCKET Escoltar = socket(AF_INET ,SOCK_STREAM , NULL); SOCKET Connectar = socket(AF_INET ,SOCK_STREAM , NULL); SOCKADDR_IN Servidor; Servidor.sin_addr.s_addr = inet_addr( "192.168.1.13" ); Servidor.sin_family = AF_INET; Servidor.sin_port = htons(800); Tornemi: int Connectat; Connectat = 0; bind(Escoltar, (SOCKADDR*)&Servidor, sizeof(Servidor)); listen(Escoltar, 10); int Tamany = sizeof(Servidor); while(true) {
if(Connectar = accept(Escoltar,(SOCKADDR*)&Servidor,&Tamany)) { if(WSAStartup(Versio, &wsa)==NO_ERROR) { while(true) {
long reb; long env; //char *rebre = new char(10002); char rebre[100]; memset(rebre,0,99); int i = 2000; setsockopt(Connectar,SOL_SOCKET,SO_RCVTIMEO,(const char *)&i,sizeof(i)); reb = recv(Connectar, rebre,sizeof(rebre) ,0); if(reb == -1) { //salta el codigo siempre aquí system("pause"); } env = send( Connectar, "M5V", 4, NULL ); if(strcmp(rebre,"MD5")==0) { system("pause"); } if(strlen(rebre) > 2) { // system("pause"); } if(strlen(rebre) < 2) { Connectat++; if (Connectat == 5) { SD.Estat(0); goto Tornemi; } } if(reb == 0) { SD.Estat(0); goto Tornemi; } else { SD.Estat(1); } char *Obtingut; Obtingut = SD.Llegir();
if(strlen(Obtingut) > 0) { //SD.Estat(1); send( Connectar, Obtingut, strlen(Obtingut), 0 ); SD.Esborrar(); } else { send(Connectar, "M5V",4 ,NULL); } if(strcmp(rebre,"M5V")==0) { SD.Estat(1); system("pause"); memset(rebre,0,10000); Connectat = 0; } else { send( Connectar, "M5V", 4, 0 ); if(strcmp(rebre,"M5V")==1 && strcmp(rebre,"")==1) {
} }
} } } } return 0x0;
}
CLIENTE:
#define _WIN32_WINNT 0x501 #include <windows.h> #include <winsock2.h> #pragma comment( lib, "ws2_32.lib" ) #include "ws2tcpip.h"
WSAData wsa; WORD Versio = MAKEWORD(2,1); WSAStartup(Versio, &wsa); SOCKADDR_IN Client; Client.sin_addr.s_addr = inet_addr("192.168.1.13"); Client.sin_family = AF_INET; Client.sin_port = htons(800); SOCKET Connectar; int Connectat; Connectat = 0; while(true) { Connectar = socket(AF_INET, SOCK_STREAM, NULL); if(connect(Connectar,(SOCKADDR*) &Client, sizeof(Client))) { while(true) { long reb; long env; char rebre[100]; memset(rebre,0,100); int i = 2000; setsockopt(Connectar,SOL_SOCKET,SO_RCVTIMEO,(const char *)&i,sizeof(i)); reb = recv(Connectar, rebre,sizeof(rebre) ,0); env = send(Connectar, "M5V",4 ,NULL); if(reb == -1) { system("pause"); } if(strlen(rebre) < 1) { //system("pause"); Connectat++; if (Connectat == 5) { //system("pause"); Connectat = 0; break; } } if(strcmp(rebre,"M5V")==0) { system("pause"); send(Connectar, "M5V",4 ,NULL); memset(rebre,0,10001); Connectat = 0; } } }
} return 0x0; }
|