当前位置: 首页 > 图文教程 > Java技术 > Java Web开发 > 浅谈Java网络编程之Socket (2)

Java Web开发
浅谈http的无状态性
JFreeChart常用函数
为什么主流Java MVC框架如此难以使用
软件工程
JavaScript 中IE与FireFox不同之处
关于javascript 的贪婪与非贪婪模式
abstract class和interface的区别
java 写的一个蜘蛛程序
javascript 基本用法简介
java web开发中构建SOAP服务
用java匿名类来简化调试
Java Web开发构想
Java Web 开发的配置详解
WEB开发中的JAVA字符编码经验总结
孙鑫老师原创:Struts 2初体验
Hibernate常见的20个问题
关于Xdoclet生成hibernate映射文件
JAVA四种基本排序
提高Java代码可重用性的三个措施
孙鑫老师原创:XML Schema初窥(一)

Java Web开发 中的 浅谈Java网络编程之Socket (2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-20   浏览: 207 ::
收藏到网摘: n/a

在《浅谈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的内容输出到用户界面

 }

}