tcp二机制写死

本文介绍了一个简单的TCP服务器的实现方法,该服务器能够接收客户端连接,并处理特定的数据包。服务器通过解析接收到的数据包来判断请求类型并作出响应。此外,还实现了基于时间的任务调度功能,用于定期发送数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



/** 
* @version 创建时间:2017年6月1日 下午3:02:18 
* 类说明 
*/
import java.io.*;
import java.net.*;
import java.util.Timer;
import java.util.TimerTask;
public class TcpServer {
  static OutputStream os =null;
  private static byte[] deliData =new byte[115];//+19
  private static int degree=0;//执行多少秒
  public static void main(String[] args) throws Exception{
      //ServerSocket server = new ServerSocket(8890);
        ServerSocket server = new ServerSocket(8890,1,InetAddress.getByName ("192.168.101.121"));
        Socket client= server.accept();
InputStream is = client.getInputStream();
os = client.getOutputStream();
   byte[] temp = new byte[1024];
   byte[] in2b = null;
   int len = 0;
   String msg = null;
   ByteArrayOutputStream byteOut =  new ByteArrayOutputStream();
   boolean res=true;
   while((len=is.read(temp))!=-1){
     byteOut.write(temp, 0, len);   // 把读到的数据以追加的方式添加到内存流中  ,此方法写入len个字节到输出流
     in2b = byteOut.toByteArray();
         msg = new String(in2b,0,len);
         if("gg".equals(msg)){
         break;
         }
        if(in2b[7]==1){//login
         byte[] data =new byte[33];
         data[3] = (byte)33;
         
         //byte[] RequestID = getByte(getHexStr(CommonUtils.getText(4,"0x80000001")));
         //byte[] RequestID = CommonUtils.getText(4,"0x80000001");
         data[4]=(byte)128;
         data[7]=(byte)1;
         
         data[11] = (byte)1;
         
         data[15] = (byte)0;
         data[31] = (byte)1;
         data[32] = (byte)0;
         if(res){
         os.write(data);
         final Timer timer = new Timer();  
         TimerTask timerTask = new TimerTask(){
public void run() {
if(degree==(Property.sec-1)){
timer.cancel();
    }
System.out.println("第"+(degree+1)+"次开始时间:"+System.currentTimeMillis());
writeDeli();
    degree++;

}
         
         };
         timer.schedule(timerTask, 0, 1 * 1000);
         res=false;
         }
        }
   }
 client.close();
      
  }
  public void writeDeli(byte[] deliData){
try {
os.write(deliData);
//System.out.println(System.currentTimeMillis()+"开始时间"+as++);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }
  //写入deliver
  private static void writeDeli(){
 for (int j = 0; j < 100; j++) {  
          new Thread(new Runnable() {  
              public void run() {  
              int num=Property.num;
                  for (int i = 0; i < num/100; i++) {  
                  String j=String.valueOf(i);
        while(j.length()<7){
        j=0+j;
        }
new TcpServer().writeDeli(putDeli(j));
                  }  
              }  
          }).start();;  
      } 
 System.out.println("第"+(degree+1)+"次结束时间:"+System.currentTimeMillis()); 
  }
  private static byte[] putDeli(String queue){//写入deliver的数据
 deliData[3] = (byte)115;//+19
 deliData[7]=(byte)3;
 deliData[11] = (byte)1;
 
 deliData[22] = (byte)0;
 deliData[23] = (byte)15;
 byte[] timeby = "20121212111112".getBytes();
 System.arraycopy(timeby,0,deliData,24,14);
 byte[] SrcTermID = "1181234".getBytes();
 System.arraycopy(SrcTermID,0,deliData,38,7);
 deliData[80] = (byte)26;//+19
 byte[] msgid = Common.hexStringToBytes("0100610116170"+queue);//msgid自增
 System.arraycopy(msgid,0,deliData,12,10);
 byte[] DestTermID = ("010"+queue).getBytes();//DestTermID自增
 System.arraycopy(DestTermID,0,deliData,59,10);
 byte[] msgcontent = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".getBytes();
 System.arraycopy(msgcontent,0,deliData,81,26);//+19
// data[89] = (byte)0;
 return deliData;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值