首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

简略服务器的实现

2012-10-10 
简单服务器的实现服务器的工作是接收并读取客户端发来的消息,以及对相关信息的处理(如对用户名,密码等的处

简单服务器的实现
服务器的工作是接收并读取客户端发来的消息,以及对相关信息的处理(如对用户名,密码等的处理),再返还给客户端
      对于简单的服务器端的实现,我觉得有两个重要的地方,一是创建ServerSocket对象,将指定的端口打开:
                        //建立绑定在指定端口上的服务器对象
   ServerSocket server = new ServerSocket(port);
    二是对连接对象发送来的消息的读取。
      附上一个简单服务器的实现的代码:

      import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MainUI {

//创建简单服务器
public void createUI(int port){
  try {
   //建立绑定在指定端口上的服务器对象
   ServerSocket server = new ServerSocket(port);
   System.out.println("服务器创建成功!"+port);
  
   while(true){//进入循环状态
       //让服务器进入等待状态
       Socket client = server.accept();
       Process(client);
   }
  
  
  } catch (IOException e) {
   e.printStackTrace();
  }
}

//处理连接对象
private void Process(Socket client) throws IOException {
 
  //从连接对象上得到输入输出流对象
  OutputStream out = client.getOutputStream();
  InputStream ins = client.getInputStream();
  String ss = "欢迎进入聊天室";
 
  //取得组成这个字符串的字节
  byte[] data = ss.getBytes();
  //用输出对象发送
  out.write(data);
  //强制输出
  out.flush();
  //调用读取字符串的方法
  String inputs = readString(ins);
  while(!inputs.equals("bye")){
   System.out.println("客户机说:"+inputs);
   ss = "服务器收到:"+inputs+"\r\n";
   //取得组成字符串的字节
   data = ss.getBytes();
   //用输出对象发送
   out.write(data);
   //强制输出
   out.flush();
   //读取下一个
   inputs = readString(ins);
  }
 
  out.write(data);
  //强制输出
  out.flush();
  //关闭与客户机的连接
  out.close();
 
}

    //从输入流对象中读取字节,拼成一个字符串返回
private String readString(InputStream ins) throws IOException {
  //创建一个字符缓冲对象
  StringBuffer stb = new StringBuffer();
  char c = 0;
  while(c!=13){
      //读取发送来的信息
   int i = ins.read();
   //强制类型转换
   c = (char)i;
   //将数据读入缓冲区
   stb.append(c);
  }
  //将得到的字节转化为字符
  String inputs = stb.toString().trim();
  return inputs;
}


//主函数
public static void main(String[] args) {
  MainUI mu = new MainUI();
  mu.createUI(9080);
}

}

热点排行