我有这个代码可以在eclipse中与android Studio中的客户端通信服务器,我使用套接字,客户端向服务器发送消息,服务器读取该消息并确定一切正常,但当服务器向客户端发送消息时,客户端不强制任何东西;这是代码
public class Servidor {
ServerSocket servidor=null;
String funcion;
public static Socket socket;
BufferedReader lector=null;
RegUser registrar=null;
PrintWriter escritor=null;
Gson gson = new Gson();
public Servidor(){
}
public static void main(String[] args) {
Servidor server=new Servidor();
server.iniciarHilo();
}
public void iniciarHilo(){
Thread principal=new Thread(new Runnable(){
public void run(){
try{
servidor=new ServerSocket(8080);
while(true){
socket=servidor.accept();
leer();
escribir();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
});
principal.start();
System.out.println("Servidor iniciado......");
}
public void leer(){
Thread leer_hilo=new Thread(new Runnable(){
public void run(){
try{
lector=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
JsonParser parser = new JsonParser();
String mensaje= lector.readLine();
JsonElement elemento = parser.parse(mensaje);
String mensaje_in=elemento.getAsJsonObject().get("tipo").getAsString();
if (lector==null){
System.out.println("Conexion Interrumpida....");
}
if (mensaje_in.equals("registrar")){
RegUser registrar=new RegUser();
System.out.println("Solicitud de Registro");
registrar.newUser(elemento);
}
else if (mensaje_in.equals("ingresar")){
System.out.println("Solicitud de Ingreso");
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
});
leer_hilo.start();
}
public void escribir(){
Thread escribir_hilo=new Thread(new Runnable(){
public void run(){
try{
escritor= new PrintWriter(socket.getOutputStream(),true);
escritor.println(funcion);
System.out.println(funcion);
}catch(Exception ex){
ex.printStackTrace();
}
}
});
escribir_hilo.start();
}
还有这个
public class RegUser extends Servidor{
Gson gson = new Gson();
ListaEnlazada listaUsuarios;
Comparar comparar=new Comparar();
public RegUser(){
}
public void newUser(JsonElement elemento){
Servidor respuesta=new Servidor();
//respuesta=new Servidor();
String user=elemento.getAsJsonObject().get("nombre").getAsString();
if(comparar.UserComp(user)){
listaUsuarios=new ListaEnlazada();
listaUsuarios.add(elemento);
System.out.println(listaUsuarios.get(0));
JsonObject o = new JsonObject();
o.addProperty("tipo", String.valueOf("registro"));
o.addProperty("estado", String.valueOf("completo"));
String enviar_mensaje = gson.toJson(o);
funcion=enviar_mensaje.toString();
escribir();
}
else
{
JsonObject comp = new JsonObject();
comp.addProperty("tipo","registro");
comp.addProperty("estado","existe");
String comparar=gson.toJson(comp);
funcion=comparar.toString();
escribir();
}
}
此代码是服务器代码的一部分,如果您需要客户端代码(Android Studio),请告诉我。
我需要帮助拜托
如果您能够在C#服务中托管您的服务器,我已经创建了一个支持1000个连接的开源项目,包括一个保活协议(AKA心跳协议)、一个可以轻松扩展的身份验证模型以及Java、Objective-C和C#API。留档包括Android、iOS和Windows Mobile的示例。您可以在这里找到它。
你不可能
多客户端服务器架构中服务器上的公共静态套接字
。服务器在“接受”方法中创建客户端套接字。
想想多个客户端连接到单个服务器的场景。如果您在服务器上有静态Socket,它只能服务器套接字。那么如何处理连接到服务器的“N”个客户端?
>
删除Servidor中的静态套接字
在接受()方法后创建套接字时,将套接字传递给需要套接字的leer()
和escribir()
方法。
我对套接字有点陌生,我正在尝试编写一个程序,在这个程序中,我基本上可以从客户端程序向服务器程序发送一些简单的请求。现在我只想在客户端有1或2个选项供用户选择。例如,如果用户在客户端选择“选项1”,那么服务器会返回一条消息“您选择选项1”,以此类推,但我不知道如何读取服务器上从客户端发送的输入。 客户代码: 服务器代码: 我需要在Clinet中使用两个不同的BufferedReader吗?一个用于用
问题内容: 我试图用没有gui的服务器连接带有gui的客户端。连接已完成,但我看不到这两个应用程序之间的任何消息。(我应该在客户端中找到SERVER HERE,在服务器中找到CLIENT HERE) 客户端连接代码: (输入和输出在此客户端类扩展到的GUI类中定义。定义为“受保护的BufferedReader输入;受保护的PrintWriter输出;”) 另外,服务器代码: 连接似乎还可以,所以我
我正在尝试连接一个带有gui的客户端和一个没有gui的服务器。连接正在进行中,但我看不到这两个应用程序之间的任何消息。(我应该将服务器放在客户端中,而将客户端放在服务器中) 客户端连接代码: PS:我也在服务器中尝试了PrintWriter,也尝试了try catch in stream语句,问题仍然存在。
问题内容: 我正在构建一个小型聊天应用程序,其中客户端A希望通过服务器B将某些东西发送到客户端C。首先,这是解决问题的正确方法吗?我能够向服务器发送数据或从服务器接收数据,但仅限于客户端。例如,如果客户端A向服务器B发送数据而客户端C向服务器B发送数据,则我可以将数据发送回服务器A和C就像回显服务器一样。但是我想要的是将来自客户端A的数据通过服务器B转发到客户端C。 以下是服务器代码: 客户端代码
我组装了一个Java套接字服务器和客户端,可以互相发送消息,我想使用JavaScript作为客户端,但是。。。下面是在托管Java服务器并加载JavaScript客户端时发生的情况。 JavaScript: 这将在chrome控制台中打印: 到“ws://127.0.0.1:9005/”的WebSocket连接失败:WebSocket握手期间出错:无效状态行 WebSocket错误[对象事件] 我
我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误: Digite uma msg casa java.io.eofexception位于java.io.datainput