创建简单服务器

 目的:创建一个简单服务器,能将客户端发来的字符串显示出来,并且再会送给客户端。
注:在这里,服务器指的是等待别人来连接的机器;客户端,指的是主动去连接别人的机器。就像打电话过程中主叫与被叫的区别一样,一旦连接成功,就不存在谁是客户端谁是服务器的区分了。
Java中编写网络通信程序,必须用到java.net包下面的API。
步骤:
第一步,在指定端口上创建一个java.net.ServerSocket对象,代码如下:
ServerSocket server=new ServerSocket(9090);
   System.out.println("服务器创建成功!"+port);
第二步,服务器创建成功后,就像手机开机后进入待机状态一样,也要让服务器进入等待状态,等待其他客户端来连接,代码如下:
//在等待客户端连接进入,进入后,生成一个Socket对象
        java.net.Socket client=server.accept();
    System.out.println("Incoming"+client.getRemoteSocketAddress());
/*
调用服务器对象server.accept()方法时,程序会“阻塞”在这个调用上,或者说“卡”到这里——直到有一个客户端连接上来,这个方法才会返回,并返回一个Socket类对象——这个对象就代表了服务器与客户端之间的连接。可以这样理解:当你拨通我的手机时,我的手机中会存在着一个“通话对象”,就相当于此的Client对象。以后(服务器)与客户端的通信,就在这个Socket类型的对象Client上进行。
*/
第三步,从Socket连接对象上调用方法得到输入输出流,代码如下:
java.net.Socket client=server.accept();
   //从连接对象上得到输入流和输出流对象
OutputStream out=client.getOutputStream();
  InputStream ins=client.getInputStream();
第四步,使用输入/输出流对象进行通信数据的读写:从输入流中读取数据,向输出流中写入数据。读到的数据即是客户端发来的数据;写出的数据就会发送给客户端!发送的代码如下所示:
  String s="你好,欢迎来javaKe.com\r\n";
     //取得组成这个字符串的字节
     byte[] date=s.getBytes();
     //用输出对象发送
      out.write(data);
      out.flush();//强制输出
    //半闭与客户端的连接
      client.close();
第五步,将上述步骤完整地集成起来,得到如下代码:
/**
*简单服务器的实现
*@auther Kingge
*/
public class ChatServer{
/**
*在指定端口上启动一个服务器
*@param port:服务器所用的端口
*/
public void setUpServer(int port){
try{
//建立绑定在指定端口上的服务器对象
ServerSocket server=new ServerSocket(port);
System.out.println("服务器创建成功"+port);
  //让服务器进入等待状态:阻塞状态
Socket client=server.accept();
//从连接对象上得到输入输出流对象
OutputStream out=client.getOutputStream();
InputStream ins=client.getInputStream();
String s="你好,欢迎来javaKe.com\r\n";
  byte[] data=s.getBytes();//取得组成这个字符串的字节
    out.write(data);
   out.flush();//强制输出
   client.close();//关闭与客户端的连接
  }catch(Exception ef){
     ef.printStackTrace();
  }
}
//主函数
public static void main(String[] args){
   ChatServer cs=new ChatServer();
   cs.setUpServer(9090);
}
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值