不知道你的Java程序是否可以修改?如果可以,建议你用SOAP协议通信,安全性好,而且简单(我用C#作了一个程序,几乎不需要任何附加的代码就可以实现)。SOAP本身设计出来就是为了多种平台互相通信,所以,不用担心不兼容。

解决方案 »

  1.   

    为什么我的程序在控制台中可运行,而集成到services中就不行了呢,上面的代码有错误吗?
      

  2.   

    为什么我的程序在控制台中能正常运行,而在service 中却有点问题呢,上面的代码有什么错误吗
      

  3.   

    你应把监听逻辑放在单独的函数中,在OnStart中启动另外的线程执行它。
    象你现在这个样子,OnStart会一直阻塞。而OnStart是由Service程序启动的,如果在一定事件内没有返回,系统就会认为启动失败。所以应让OnStart尽快返回,在另一线程中执行程序逻辑。
      

  4.   

    我又定义了一个beginlisten()函数,在onstart中调用,一定要用线程吗,如何去写呢
      

  5.   

    提供一函数
    public static void DoWork()
    {
    //do some work 也就是你的
    // TODO: 在此处添加代码以启动服务。
      TcpListener t = new TcpListener(7);
      t.Start();
      bool done=false;//用来一直监听
      while (!done) 
       { 
        TcpClient s = t.AcceptTcpClient();
        NetworkStream stream=s.GetStream();
        byte[] bytes = new byte[2048];
        int bytesRead = stream.Read(bytes, 0, bytes.Length);//得到客户端的数据
        //do  other app.....
       }
    }
    在OnStart中添加
    ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
    Thread myThread = new Thread(myThreadDelegate);
    myThread.Start();在OnStop中添加
    myThread.Abort();