Pues yo empecé a mirar los sockets en java en mi clase el otro dia y obtuve ese error de "connect refused" porque ejecutaba el programa cliente antes que el servidor. Prueba a ejecutar antes el servidor y luego el cliente.
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ú
#include<stdio.h>
#include<conio.h>
#include <ctype.h>
int main (){
//cadenacont[28] es un array que contiene el numero de apariciones de cada letra
int cadenacont[28],i,j;
//cadena[500] es el array que contiene la cadena que queremos comprobar
//su valor lo introducimos por teclado
char cadena[500];
//cadenabc[] es un array que contiene todas las letras del abecedario
char cadenabc[] ="abcdefghijklmnñopqrstuvwxyz";
printf("Introduzca cadena\n");
scanf("%s",cadena);
//ponemos en minuscula todas las letras que hemos introducido por teclado
for(i = 0; cadena[i]!='\0'; i++)
cadena[i] = tolower(cadena[i]);
for (j=0; j<28; j++){
cadenacont[j] = 0;
}//contador a 0
//cada vez que se encuentra una letra del abecedario incrementamos el numero de apariciones del mismo
for(i=0; cadena[i]!='\0';i++){//sumar caracteres dos bucles anidados
for(j=0; j<27; j++){
if(cadena[i]==cadenabc[j]){
cadenacont[j]++;
break;
}
}
}
//comprobamos que el numero de apariciones de cada letra es 1
for(j=0;j<=27;j++){
if(cadenacont[j]==1){
}
else{
break;
}
}//comprobar si es abecegrama
if(j>=27){
printf("abecegrama");
}
else{
for(i=0; i<27; i++){
printf("%c = %d\n",cadenabc[i],cadenacont[i]);
}
}
getch();
}
Cita de: crack81 en 22 Diciembre 2016, 19:39 PMTodos los objetos al heredar de Object contiene el metodo getClass() con el cual se puede identificar a que clase pertenece¿Y como puedes saber que el objeto tiene una funcion llamada getC() con getClass()? La unica forma que se me ocurre es haciendo uso de una cosa que se llama "Reflection", pero obviamente no creo que sea asi como se hace, ya que de esa forma se consume muchos mas recursos.
Cita de: miltonprogramador en 21 Diciembre 2016, 14:20 PMtodas los atributos por defecto son de tipo publica, por lo que se puede llegar a ellos desde cualquier programa para obtener o alterar su valor.Te equivocas, por defecto son de tipo "package", que significa que ese atributo (o metodos, si estos tampoco se declaran con public o private o protected) puede ser accedido desde cualquier clase que este dentro del mismo paquete. Una cosa curiosa del tipo de dato "package" es que la unica forma de declararlo como tal es omitiendo el tipo de acceso (public, private o protected, como ya he dicho). De modo que si no se escriben ninguna de estas 3 palabras solo entonces es package.
Cita de: QueenAlejandra en 20 Diciembre 2016, 18:26 PMme gustaría saber porque se declaran de esta manera, y no de forma publica. Yo he llegado a la conclusión de que puede ser por seguir el paradigma, segmentar el programa, en métodos, pero no se si es por eso.Lo normal no solo es declararlo de forma private los atributos sino ademas crear un metodo getAtributo() y setAtributo() para obtener el atributo y cambiar el valor del mismo.![]()
Cita de: crack81 en 22 Diciembre 2016, 19:21 PMcuando llamas a getB() te retorna la referencia donde se encuentra el objeto pero no sabe de que tipo es, lo unico que puedes hacer es importar la clase a la que pertenece o asginarlo a una variable de tipo Object que es la clase la cual todos los objetos heredan.Si no reconoce la clase, ¿Como es posible ejecutar un metodo de la misma sin importarla? Como en este caso, que seria el metodo getB(). ¿Como reconoce este metodo sin reconocer la clase?
Cita de: kingcreek en 22 Diciembre 2016, 12:28 PM
Como ha comentado miltonprogramador, si dejas un ejemplo practico del cual viene tu duda podriamos darte una axplicacion. Ya que por ejemplo:A a = new A();
C c = a.getB().getC();
No es posible si declaras una funcion que retorne un objeto tipo String como en el siguiente ejemplo que dare.
Cita de: 4dr14n31t0r en 21 Diciembre 2016, 20:47 PM¿Que parte de "la clase A tiene un metodo: getB(), que devuelve un objeto de la clase B" no entiendes?
Supongamos que tengo 3 clases: A, B y C, y que la clase A tiene un metodo: getB(), que devuelve un objeto de la clase B, y que B tambien tiene un metodo, getC(), que devuelve un objeto de la clase C.
A a = new A();
B b = a.getB();
C c = b.getC();
Tendria que importar la clase A,B y C. Sin embargo, si yo hiciera esto:A a = new A();
C c = a.getB().getC();
No tendria que importar la clase B. ¿Por que?package paquete_a;
import paquete_b.B;
public class A{
public B getB(){
return new B();
}
}
package paquete_b;
import paquete_c.C;
public class B{
public C getC(){
return new C();
}
}
package paquete_c;
public class C{
//Esta clase no tiene nada
}
package test;
import paquete_a.A;
import paquete_b.B;
import paquete_c.C;
public class Test_1{
public static void main(String[] args){
A a = new A();
B b = a.getB();
C c = b.getC();
}
}
package test;
import paquete_a.A;
//No es necesaria la importación de la clase B
import paquete_c.C;
public class Test_2{
public static void main(String[] args){
A a = new A();
C c = a.getB().getC();
}
}
EDIT 2: Vamos a suponer que en C++ tenemos 3 archivos headers (esos que tienen la extension ".h"): Uno para la clase A, otro para la clase B y otro para la clase C, que basicamente seran iguales que las clases que acabo de mostrar, pero con la unica diferencia de que estan escritos en C++. Supongamos tambien que tenemos 2 archivos: test1.cpp y test2.cpp, que solo tienen un metodo main que simplemente hacen lo mismo que el metodo main de la clase Test_1 y Test_2 de java que he mostrado antes para ver como seria un ejemplo. Bueno pues en C++ cuando tu incluyes un archivo (En este caso, algo como #include A.h ó #include B.h) lo que realmente pasa es que se "inserta" tal cual el archivo encima de aquel en el que lo incluyes, de modo que si un archivo solo tiene el siguiente codigo:#include <stdio.h>
int main(
y otro incluye al anterior y solo tiene el siguiente codigo:){
printf("Hola Mundo");
}
Compilará sin problemas y si ejecutamos nos mostrará el mensaje "Hola Mundo". A a = new A();
B b = a.getB();
C c = b.getC();
Se pueda compilar y ejecutar sin problemas. Sin embargo con java no pasa esto, sino que algunas veces (Como el primer caso que muestro arriba del todo) hay que importar la clase B, y en otros (Como el ejemplo de codigo que viene inmediatamente despues) no es necesario para ejecutar getC(). ¿Por que? ¿Por que unas veces si y otras veces no?