Comunicação Socket
02/09/2015
0
Bom dia Galera, tudo bem?
Estou desenvolvendo um aplicativo para WP que faz comunicação socket com um servidor Socket que criei em java.
O aplicativo se conecta normalmente, mas estou com problema na hora de enviar mensagens.
O APP não da erro nem nada, mas o servidor não recebe a mensagem. O servidor só recebe a mensagem no momento em que eu fecho o aplicativo.
Ex:
1) envio a mensagem e servidor não recebe;
2)fecho o App ai o servidor recebe todas as mensagens enviadas pelo app anteriormente.
Obs: Montei um cliente simples em java e este funciona normalmente. Envio a mensagem e recebo a mesma no servidor no mesmo momento.
//Servidor
Cliente Windows Phone
Desde ja agradeço :)
Estou desenvolvendo um aplicativo para WP que faz comunicação socket com um servidor Socket que criei em java.
O aplicativo se conecta normalmente, mas estou com problema na hora de enviar mensagens.
O APP não da erro nem nada, mas o servidor não recebe a mensagem. O servidor só recebe a mensagem no momento em que eu fecho o aplicativo.
Ex:
1) envio a mensagem e servidor não recebe;
2)fecho o App ai o servidor recebe todas as mensagens enviadas pelo app anteriormente.
Obs: Montei um cliente simples em java e este funciona normalmente. Envio a mensagem e recebo a mesma no servidor no mesmo momento.
//Servidor
protected Socket socket = null; protected final OutputStream streamOut; protected final InputStream streamIn; private final Scanner s; protected String codigoAcesso = ""; public ThreadClient(Socket socket) throws IOException { super(); this.socket = socket; streamOut = socket.getOutputStream(); streamOut.flush(); streamIn = socket.getInputStream(); s = new Scanner(streamIn); } @Override public void run() { while (s.hasNextLine()) { String mensage = s.nextLine(); disparaMessageReceived(mensage); } }
Cliente Windows Phone
class ClientConnection { private const int TIMEOUT_MILLISECONDS = 5000; private const int MAX_BUFFER_SIZE = 2048; private int serverPort; private string serverHostnameString; private ManualResetEvent _clientDone = new ManualResetEvent(false); private SocketAsyncEventArgs _socketEventArg; private Socket _socket = null; public ClientConnection(String ip, int port) { this.serverPort = port; this.serverHostnameString = ip; } public void connect() { string result = string.Empty; DnsEndPoint hostEntry = new DnsEndPoint(this.serverHostnameString, this.serverPort); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs(); socketEventArg.RemoteEndPoint = hostEntry; socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate (object s, SocketAsyncEventArgs e) { result = e.SocketError.ToString(); _clientDone.Set(); }); _clientDone.Reset(); _socket.ConnectAsync(socketEventArg); _clientDone.WaitOne(TIMEOUT_MILLISECONDS); } public void Send(String data) { if (_socket != null) { _socketEventArg = new SocketAsyncEventArgs(); _socketEventArg.RemoteEndPoint = _socket.RemoteEndPoint; _socketEventArg.UserToken = null; _socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate (object s, SocketAsyncEventArgs e) { _clientDone.Set(); _socketEventArg = null; }); } if (_socketEventArg != null) { var payload = Encoding.UTF8.GetBytes(data); _socketEventArg.SetBuffer(payload, 0, payload.Length); _clientDone.Reset(); _socket.SendAsync(_socketEventArg); _clientDone.WaitOne(TIMEOUT_MILLISECONDS); } } }
Desde ja agradeço :)
Thiago Moises
Curtir tópico
+ 0
Responder
Posts
08/09/2015
Nilsen Miotto
eu não sei te dizer o que acontece mas vou te dizer uma experiência parecida que eu tive, no meu caso era usando websocket com servidor c++ e cliente javascript o meu problema foi o seguinte:
Quando era criado uma nova conexão o meu servidor enviava varias mensagens para o cliente as vezes elas não chegavam só quando eu enviava novamente outra mensagem que eu recebia as anteriores. No meu caso era um problema de performance, o servidor tentava enviar muitas mensagens para a mesma conexão em um curto prazo de tempo, Eu resolvi diminuindo a quantidade de mensagens enviadas para o cliente após conectar no servidor.
Quando era criado uma nova conexão o meu servidor enviava varias mensagens para o cliente as vezes elas não chegavam só quando eu enviava novamente outra mensagem que eu recebia as anteriores. No meu caso era um problema de performance, o servidor tentava enviar muitas mensagens para a mesma conexão em um curto prazo de tempo, Eu resolvi diminuindo a quantidade de mensagens enviadas para o cliente após conectar no servidor.
Responder
09/10/2015
Thiago Moises
eu não sei te dizer o que acontece mas vou te dizer uma experiência parecida que eu tive, no meu caso era usando websocket com servidor c++ e cliente javascript o meu problema foi o seguinte:
Quando era criado uma nova conexão o meu servidor enviava varias mensagens para o cliente as vezes elas não chegavam só quando eu enviava novamente outra mensagem que eu recebia as anteriores. No meu caso era um problema de performance, o servidor tentava enviar muitas mensagens para a mesma conexão em um curto prazo de tempo, Eu resolvi diminuindo a quantidade de mensagens enviadas para o cliente após conectar no servidor.
Quando era criado uma nova conexão o meu servidor enviava varias mensagens para o cliente as vezes elas não chegavam só quando eu enviava novamente outra mensagem que eu recebia as anteriores. No meu caso era um problema de performance, o servidor tentava enviar muitas mensagens para a mesma conexão em um curto prazo de tempo, Eu resolvi diminuindo a quantidade de mensagens enviadas para o cliente após conectar no servidor.
Cara.. desculpa de demora pra responder rsrs. corrido o ultimo mes.
Consegui resolver.. e era simples.. perdi dias com essa bosta rsrsrsrsrsr
era só colocar "\n" no final de cada string que eu ia enviar :/
kkkkkkkkkkkkkkkkkkkkk
Mas valeu pela ajuda :)
Responder
Clique aqui para fazer login e interagir na Comunidade :)