Cliente Servidor - TCP/IP

Pessoal fiz um servidor para receber informações dos cliente. Até ae tudo beleza, agora preciso fazer para o cliente enviar mensagens… Não estou conseguindo!
Fiz o cliente utilizando: sock = new Socket(“IP”,PORT);
onde IP é o IP do servidor e PORT é a porta que o servidor espera a conexão!

Mas não estou achando o sock.send… sei lá algo relativo a isso… alguém poderia me ajudar?

Abraços

Se você quiser enviar dados por um socket, você precisa “escrever” no outpustream desse socket.
O OutputStream você consegue chamando o método getOutputStream() da classe Socket. Depois basta usar os métodos de escrita mais adequado para a sua ocasião. Lembrando de sempre dar um flush() quando você kiser realmente enviar os seus dados, só pra garantir…

[]'s.

O que seria o metodo FLUSH em si? teria uma explicação um pouco mais detalhada…

Acho que vai dar certo!
Valeu ae, brigado!

Ainda fiquei na dúvida… como eu faço para colocar um STRING… nossa, totalmente perdido!
Vou continuar tentar,

Abraços

Pra mandar string, encapsule num writer, mais ou menos assim:

 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutPutStream()));

O buffer guarda os seus bytes até ficar lotado ou até você chamar flush(). Assim, você não manda um pacote TCP/IP pra cada write() que você der.

agora eu consegui fazer! Mas agora o problema é que não consigo mostrar no servidor as mensagens que mando!

Buenas xiru.
Segue abaixo um cliente pra ti analisar…

		Socket socket = null;
		try {
			String ip = "201.87.177.161";
			InetAddress addr = InetAddress.getByName(ip);
			int port = 6969;
			
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			
			
			// envia pro servidor a string
			out.write("qualquer string");
			out.flush();
			socket.shutdownOutput();
			
			
			// recebe do servidor
			String ret = in.readLine();
			System.out.println("retorno do servico :"+ret);
			in.close();
			out.close();
			
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

Olha esse tutorial aqui… http://www.guj.com.br/java.tutorial.artigo.126.1.guj
Abraço

O livro Java: Como Programar do Deitel tem um exemplo simples do que esta procurando.

Pior que eu comprei o do Kathy Sierra e Bert Bates -> “Java Use a Cabeça!”… vou ver se acho o livro com algum conhecido!

Abraçossss

Pior nada, ainda bem, 10x Java Use a Cabeça. tenho uns exemplos em casa, se der depois posto aqui.

uhahuah “pior” modo de dizer, gosto muito do livro que comprei! eu já o Deitel e achei que não faz meu tipo o livro… se conseguir algo! Agora tive uns contra-tempos aqui para resolver, se tudo der certo ainda quero mexer este final de ano no projeto!

Eu de imediato precisava de um servidor que recebesse mensagens de um ou mais clientes e salvase em arquivos de texto mesmo… para mim a parte de como receber as informações em fluxo seria bem legal… o mais dificil é entender como ele irá ficar recebendo os dados pela rede…

Abraços!

velho, só deu pra postar fds:
Segue as duas classes, é bem simples, você pode melhorar, utilizando threads e um interface grafica melhor.

import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;


class ClienteTCP
{
	public static void main(String argv[]) throws Exception
	{
			String ip;
			int porta;
			String frase="a";
			String str;

			ip=JOptionPane.showInputDialog("Digite o numero do ip");
			str=JOptionPane.showInputDialog("Digite o numero da porta","6789");
			porta=Integer.parseInt(str);

			while(frase!=null)
			{
				BufferedReader doUsuario= new BufferedReader(new InputStreamReader(System.in));
				Socket socketCliente=new Socket(ip, porta);
				DataOutputStream paraServidor= new DataOutputStream(socketCliente.getOutputStream());
				BufferedReader doServidor= new BufferedReader( new InputStreamReader(socketCliente.getInputStream()));
				frase= JOptionPane.showInputDialog("Digite a Mensagem");
				paraServidor.writeBytes(frase + "\n");
				socketCliente.close();
			}
	}
}
import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;

class ServidorTCP
{
	public static void main(String args[]) throws Exception
	{
		String fraseCliente;
		String fraseMaiuscula;
		String str;
		int porta;

		str=JOptionPane.showInputDialog("Digite a porta de comunicacao para o servidor", "6789");
		porta=Integer.parseInt(str);

		ServerSocket socketRecepcao= new ServerSocket(porta);
		while(true)
		{
			Socket socketConexao=socketRecepcao.accept();
			BufferedReader doCliente= new BufferedReader(new InputStreamReader(socketConexao.getInputStream()));
			DataOutputStream paraCliente= new DataOutputStream(socketConexao.getOutputStream());
			fraseCliente= doCliente.readLine();
			JOptionPane.showMessageDialog(null, fraseCliente,"Mensagem Recebida", JOptionPane.INFORMATION_MESSAGE);
		}
	}
}