Socket

       在Java中的通信主要是通过使用socket进行通信的,通信主要运用的是C\S 模式,即服务器和客户机。

主动请求链接的时客户机,等待链接的是服务器。在创建服务器时指定是那个端口,而客户机则通过服务器的ip地址和端口来和服务器进行链接。

       服务器的建立:

 

ServerSocket ss=new ServerSocket(9876);//在端口号为9876的端口上建立一个服务器
Socket client=ss.accept();//等待来自客户机的连接请求,并返回一个与客户机建立通信的socket
			
InputStream ins=client.getInputStream();//取得输入流
OutputStream ou=client.getOutputStream();//取得输出流

   客服机的建立和链接:

Socket client=new Socket("localhost",9876);//创建一个和本机上端口为9876服务器相连接的socket对象
OutputStream out=client.getOutputStream();
InputStream ins=client.getInputStream();

      通信的核心代码就是上述的几行,以后实现客户机和服务器的数据发送和读取,就是从输入流上读取、向输出流中写入。但是在数据的传送中,数据是以字节来传送的,而且数据的读取是被动的,也就是说数据读取是程序并不知道何时读取完毕,也不知道读取的数据如何划分,所以我们要给这些数据定义一个协议,比如我们用一个#号来标记一句完整的消息,又比如在一句完整消息的头部的4个字节用来记录这个消息的长度等。协议我们可以自定义,但是客户机和服务器要使用同一套的协议。

   

  数据的读取:下面是读取一句以#定义结尾的消息

String msg;
while(true){
      StringBuffer sbu=new StringBuffer();
      char a=0;
      while(a!=#){
      int d=ins.read();
      a=(char)d;
      sbu.append(a);
      }
      msg=sbu.toString().trim();
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值