C#开发客户端、JAVA和tomcat开发服务端

hessian入门,Hello和文件上传范例,C#客户端+Java Tomcat后台

2.Hello范例
1)后台--定义Java接口:
package org.migle.hessian; 
public interface Hello {  
    public String sayHello(String smt);  
    public void printHello(String smt);  
}
2)后台--实现Java接口:
package org.migle.hessian.impl;
import org.migle.hessian.Hello;
public class HelloImpl implements Hello {  
    public String sayHello(String smt) {  
        return smt != null ? "hello " + smt : "hello hessian";  
    }  
    public void printHello(String smt) {  
        System.out.println("Hello " + smt);  
    }  

3)后台--配置 Tomcat/HessianServer/WEB-INF/web.xml,前提条件是lib下包含hessian-4.0.7.jar:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>hessian</display-name>
 <servlet> 
  <servlet-name>hessian</servlet-name> 
  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 
  <init-param> 
  <param-name>service-class</param-name> 
  <param-value>org.migle.hessian.impl.HelloImpl</param-value> 
  </init-param>
  </servlet>
 <servlet-mapping>
  <servlet-name>hessian</servlet-name> 
  <url-pattern>/hessian</url-pattern> 
 </servlet-mapping>
</web-app>
4)前台--C#代码,定义接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace WindowsFormsApplication3
{
    public interface Hello
    {

string sayHello(string smt);
        void printHello(string smt);
    }
}
5)前台--C#代码,实现远程调用Java类,前提条件是引用hessianCsharp.dll:
......
using hessiancsharp.client;
using hessiancsharp.io;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
            string url = "http://localhost/HessianServer/hessian";
            CHessianProxyFactory factory = new CHessianProxyFactory();

Hello test = (Hello)factory.Create(typeof(Hello), url);
            MessageBox.Show(test.sayHello("migle"));//打印从服务器端获取的字符串  
            test.printHello("Hessian"); //在服务器端控制台打印 "Hello Hessian"  
        }
......
6)运行C#程序。

3.文件上传范例,在2基础上实现
1)后台--定义Java接口:
package org.migle.hessian;
import java.io.InputStream;
public interface UploadFile {
 public boolean uploadFile(String fileName, InputStream data);
}
2)后台--实现Java接口:
package org.migle.hessian.impl;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.migle.hessian.UploadFile;
public class UploadFileImpl implements UploadFile {

@Override
 public boolean uploadFile(String fileName, InputStream in) {
  try
  {
   OutputStream out = new FileOutputStream("D:/temp/"+fileName);
   int nLength = 0;
   byte[] bData = new byte[1024];
   while( -1!=(nLength=in.read(bData)) )
   {
    out.write(bData, 0, nLength);
   }
  
   out.close();
   return true;
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return false;
  } catch (IOException e) {
   e.printStackTrace();
   return false;
  }
  finally
  {
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}
3)后台--配置 Tomcat/HessianServer/WEB-INF/web.xml,新增一个servlet:
......
 <servlet> 
  <servlet-name>upload</servlet-name> 
  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 
  <init-param> 
  <param-name>service-class</param-name> 
  <param-value>org.migle.hessian.impl.UploadFileImpl</param-value> 
  </init-param> 
 </servlet>
 <servlet-mapping>
  <servlet-name>upload</servlet-name> 
  <url-pattern>/upload</url-pattern> 
 </servlet-mapping>
......
4)前台--C#代码,定义接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace WindowsFormsApplication3
{
    public interface Hello
    {

string sayHello(string smt);
        void printHello(string smt);
    }

public interface UploadFile //这是在hello基础上新增的部分接口
    {
        bool uploadFile(string fileName, Stream srOutput);
    }
}
5)前台--C#代码,实现远程调用Java类,在Hello范例基础上,新增一个上传文件的事件响应处理:
......
        private void buttonUpload_Click(object sender, EventArgs e)
        {
            Stream os = new FileStream(textBoxUpload.Text, FileMode.Open, FileAccess.Read);

string url = "http://localhost/HessianServer/upload";
            CHessianProxyFactory factory = new CHessianProxyFactory();
            UploadFile test = (UploadFile)factory.Create(typeof(UploadFile), url);
            test.uploadFile("test.xml", os);
            MessageBox.Show("222");
            os.Close();
        }
......

时间: 2024-10-10 22:46:38

C#开发客户端、JAVA和tomcat开发服务端的相关文章

从零开始开发IM(即时通讯)服务端(二)

好消息:IM1.0.0版本已经上线啦,支持特性: 私聊发送文本/文件 已发送/已送达/已读回执 支持使用ldap登录 支持接入外部的登录认证系统 提供客户端jar包,方便客户端开发 github链接: https://github.com/yuanrw/IM 本篇将带大家从零开始搭建一个轻量级的IM服务端,IM的整体设计思路和架构在我的上篇博客中已经讲过了,没看过的同学请点击从零开始开发IM(即时通讯)服务端 . 这篇将给大家带来更多的细节实现.我将从三个方面来阐述如何构建一个完整可靠的IM系统

通过Java WebService接口从服务端下载文件

一. 前言 本文讲述如何通过webservice接口,从服务端下载文件.报告到客户端.适用于跨系统间的文件交互,传输文件不大的情况(控制在几百M以内).对于这种情况搭建一个FTP环境,增加了系统部署的复杂度和系统对外暴露的接口.通过在服务端读取文件,返回字节流到客户端的方式比较简单. 下面采用restful的接口形式,满足SOA架构接口要求.如下代码拷贝到eclipse中即可运行,功能自测试运行正常.样例代码的服务端和客户端在同一台PC上运行,放到不同PC上运行改一下发布服务和请求服务的IP地址

(8)Linux(客户端)和Windows(服务端)下socket通信实例

Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <stdio.h> #include <Windows.h> #pragma comment(lib, "ws2_32.lib") #define Port 5000 #define IP_ADDRESS "192.168.1.30"     //服务器地址

WebSocket安卓客户端实现详解(三)–服务端主动通知

WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 WebSocket安卓客户端实现详解(二)–客户端发送请求 终于是最后一篇啦,有点激动\ ( ≧▽≦ ) /啦啦啦, 服务端主动通知 热身完毕,我们先回顾下第一篇中讲到的服务端主动通知的流程 根据notify中事件类型找到对应的处理类,处理对应逻辑. 然后用eventbus通知对应的ui界面更新. 如果

如何创建一个客户端回调:js获得服务端的内容?

答案:表面上看去就是前端的js调用服务的C#方法,本质就是ajax,通过XMLHttpRequest对象和服务端进行交互.回调:就说回过头来调用,按理说js是一种脚本语言,怎么能用来调用服务端的呢?就是通过XMLHttpRequest实现的. 下面说一些具体的操作步骤 1.页面继承接口System.Web.UI.ICallbackEventHandler //继承接口使得:该页面可以作为服务器上的回调事件的目录 2.定义前端代码如下 <div> 请输入信息: <input type=&q

从零开始开发IM(即时通讯)服务端

好消息:IM1.0.0版本已经上线啦,支持特性: 私聊发送文本/文件 已发送/已送达/已读回执 支持使用ldap登录 支持接入外部的登录认证系统 提供客户端jar包,方便客户端开发 github链接: https://github.com/yuanrw/IM 前言 首先讲讲IM(即时通讯)技术可以用来做什么: 聊天:qq.微信 直播:斗鱼直播.抖音 实时位置共享.游戏多人互动等等 可以说几乎所有高实时性的应用场景都需要用到IM技术. 本篇将带大家从零开始搭建一个轻量级的IM服务端,麻雀虽小,五脏

java中socket创建服务端与客户端即时对聊

package tool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; impo

JAVA聊天室客户端不显示内容,服务端没问题的原因总算找到了

o(≧口≦)o刚才打了很多内容,结果忘了网络断开了,没法自动存稿.结果一发布把内容都弄没了.气死,不写了. 今天讲的是JAVAEE,讲的很快,主要就重点或者是和SE不一样的才过一下,差不多的就跳过去,让我们自己看PPT......(没掉的内容)...... 上周做了个简单的聊天室功能代码,一直出错.发的内容只能在服务端看到,客户端却看不到.字符串一直等待接收,但就是收不到.对着老师的代码改了好几遍,还是不行.还让老师帮忙看了很久,也还是没发现问题.今天下午又试着做了一遍,不过代码不熟,还是按照自

java的客户端可以连接CPlus的服务端

今天做的实验,用c++做的服务端,端口号为6000:用java做的客户端,IP为127.0.0.1,port为6000,结果双方可以连接上线: 贴代码: 服务端: #include <winsock2.h>#include <iostream>using namespace std;SOCKET sockConn = NULL;char content[100] = " ";int flag = 1;DWORD WINAPI MYrevc(LPVOID lp){