知识大全 java网络通信小程序

Posted 文件

篇首语:生也有涯,知也无涯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java网络通信小程序相关的知识,希望对你有一定的参考价值。

  //ChatServer java文件

  import java io *;

  import *;

  import java util *;

  public class ChatServer

  boolean started = false;

  ServerSocket ss = null;

  List<Client> clients = new ArrayList<Client>();

  public static void main(String[] args)

  new ChatServer() start();

  

  public void start()

  try

  ss = new ServerSocket( );

  started = true;

   catch (BindException e)

  System out println( 端口使用中 );

  System out println( 请关掉相关程序并重新运行服务器! );

  System exit( );

   catch (IOException e)

  e printStackTrace();

  

  try

  while(started)

  Socket s = ss accept();

  Client c = new Client(s);

  System out println( a client connected! );

  new Thread(c) start();

  clients add(c);

  //dis close();

  

   catch (IOException e)

  e printStackTrace();

   finally

  try

  ss close();

   catch (IOException e)

  // TODO Auto generated catch block

  e printStackTrace();

  

  

  

  class Client implements Runnable

  private Socket s;

  private DataInputStream dis = null;

  private DataOutputStream dos = null;

  private boolean bConnected = false;

  public Client(Socket s)

  this s = s;

  try

  dis = new DataInputStream(s getInputStream());

  dos = new DataOutputStream(s getOutputStream());

  bConnected = true;

   catch (IOException e)

  e printStackTrace();

  

  

  public void send(String str)

  try

  dos writeUTF(str);

   catch (IOException e)

  clients remove(this);

  System out println( 对方退出了!我从List里面去掉了! );

  //e printStackTrace();

  

  

  public void run()

  try

  while(bConnected)

  String str = dis readUTF();

  System out println(str);

  for(int i= ; i<clients size(); i++)

  Client c = clients get(i);

  c send(str);

  //System out println( a string send ! );

  

  /*

  for(Iterator<Client> it = erator(); it hasNext(); )

  Client c = it next();

  c send(str);

  

  */

  /*

  Iterator<Client> it = erator();

  while(it hasNext())

  Client c = it next();

  c send(str);

  

  */

  

   catch (EOFException e)

  System out println( Client closed! );

   catch (IOException e)

  e printStackTrace();

   finally

  try

  if(dis != null) dis close();

  if(dos != null) dos close();

  if(s != null)

  s close();

  //s = null;

  

   catch (IOException e )

  e printStackTrace();

  

  

  

  

  

  //ChatClient java文件

  import java awt *;

  import java awt event *;

  import java io *;

  import *;

  public class ChatClient extends Frame

  Socket s = null;

  DataOutputStream dos = null;

  DataInputStream dis = null;

  private boolean bConnected = false;

  TextField tfTxt = new TextField();

  TextArea taContent = new TextArea();

  Thread tRecv = new Thread(new RecvThread());

  public static void main(String[] args)

  new ChatClient() launchFrame();

  

  public void launchFrame()

  setLocation( );

  this setSize( );

  add(tfTxt BorderLayout SOUTH);

  add(taContent BorderLayout NORTH);

  pack();

  this addWindowListener(new WindowAdapter()

  @Override

  public void windowClosing(WindowEvent arg )

  disconnect();

  System exit( );

  

  );

  tfTxt addActionListener(new TFListener());

  setVisible(true);

  connect();

  tRecv start();

  

  public void connect()

  try

  s = new Socket( );

  dos = new DataOutputStream(s getOutputStream());

  dis = new DataInputStream(s getInputStream());

  System out println( connected! );

  bConnected = true;

   catch (UnknownHostException e)

  e printStackTrace();

   catch (IOException e)

  e printStackTrace();

  

  

  public void disconnect()

  try

  dos close();

  dis close();

  s close();

   catch (IOException e)

  e printStackTrace();

  

  /*

  try

  bConnected = false;

  tRecv join();

   catch(InterruptedException e)

  e printStackTrace();

   finally

  try

  dos close();

  dis close();

  s close();

   catch (IOException e)

  e printStackTrace();

  

  

  */

  

  private class TFListener implements ActionListener

  public void actionPerformed(ActionEvent e)

  String str = tfTxt getText() trim();

  //taContent setText(str);

  tfTxt setText( );

  try

  //System out println(s);

  dos writeUTF(str);

  dos flush();

  //dos close();

   catch (IOException e )

  e printStackTrace();

  

  

  

  private class RecvThread implements Runnable

  public void run()

  try

  while(bConnected)

  String str = dis readUTF();

  //System out println(str);

  taContent setText(taContent getText() + str + \\n );

  

   catch (SocketException e)

  System out println( 退出了 bye! );

   catch (EOFException e)

  System out println( 推出了 bye bye! );

   catch (IOException e)

  e printStackTrace();

  

  

  

cha138/Article/program/Java/hx/201311/25933

相关参考