浅谈Java网络编程之Socket (2)

《浅谈Java网络编程之Socket (1)》中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码。

 

import java.net.*;

import java.io.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

public class talkServer

{ public static void main(String[] args)

 { try

  { file://建立服务器

   ServerSocket server = new ServerSocket(9998);

   int i=1;

   for(;;)

    { Socket incoming = server.accept();

     new ServerThread(incoming,i).start();

     i++;

    }

   }catch (IOException ex){

   ex.printStackTrace();

  }

 }

}

 

class ServerThread extends Thread implements ActionListener

{

 private int threadNum;

 private Socket socket;

 talkServerFrm t;

 BufferedReader in;

 PrintWriter out;

 private boolean talking=true;

 public ServerThread(Socket s,int c)

 { threadNum = c;

  socket = s;

 }

 

public void actionPerformed(ActionEvent e)

{ Object source = e.getSource();

 try{

  if(source==t.btnSend)

   { out.println(t.getTalk());

    t.clearTalk();

  }else

  if(source==t.btnEnd)

   { out.println("谈话过程被对方终止");

    out.close();

    in.close();

    talking = false;

   }

 }catch(IOException ex){

 }

}

 

public void run()

{ try{

  t=new talkServerFrm(new Integer(threadNum).toString(),this);

  t.setSize(500,500);

  t.show();

  in = new BufferedReader(new

      InputStreamReader(socket.getInputStream()));

  out = new PrintWriter(socket.getOutputStream(),true);

 }catch(Exception e){

}

 new Thread()

 { public void run()

  { try{

    while(true)

    { checkInput();

     sleep(1000);

  }

 }catch (InterruptedException ex){

 }catch(IOException ex){

 }

 }

 }.start();

 while(talking)

 { }

 t.dispose();

 }

 

private void checkInput() throws IOException

{ String line;

 if((line=in.readLine())!=null)

  t.setPartner(line); file://这是界面类里的方法,

  file://用来将line的内容输出到用户界面

 }

}

posted @ 2011-12-03 00:37  qiforme  阅读(180)  评论(0编辑  收藏  举报