我想做2个com组件,一个在客户端运行,一个服务器端客户端需要给服务器发消息
消息包括此次发送的标题,还有若干文件流服务器端的com,把客户端的标题插到数据中,然后把文件保存在指定路径下,然后给客户端发成功消息比如
客户端:发送"感谢大家回答",还有c:\text.txt,d:\11.txt,e:\xx.doc的文件给服务器,服务器,接到后,把"感谢大家回答"把insert到数据库中,然后保存发来的若干文件到本地,如果成功给客户端发送成功,否则发送失败
----------------------------------------------------------
基本上上面就是需求我想用winsock来编程,不过,有以下问题
1,客户端向服务器发若干个文件流,怎么实现,还是用循环多次发送,winsock能实现文件的传输吗?就像QQ的传文件一样
2,服务器端要把这个批次是否成成功返回客户端,如果1问题中,用循环多次发送文件,能实现吗?(比如,c:\text.txt成功,而d:\11.txt失败,则返回失败)
3,这个程序是一个接口程序,2个公司之间的,一个是asp,一个是jsp,我想asp中用
com的winsock,jsp中servlet的socket,这样可以吗?
4,如果服务器端用servlet需要用线程编程吗?
--------------------------------------------------------
以上只是我想的,各位兄弟,还没有别的好办法吗?可以不用socket吗?以前有个类似的程序用的是dime,不过,服务器端不能给客户端返回值

解决方案 »

  1.   

    1,客户端向服务器发若干个文件流,怎么实现,还是用循环多次发送,winsock能实现文件的传输吗?就像QQ的传文件一样
      WINSOCK可以实现文件传输.2,服务器端要把这个批次是否成成功返回客户端,如果1问题中,用循环多次发送文件,能实现吗?(比如,c:\text.txt成功,而d:\11.txt失败,则返回失败)
       可以.
    3,这个程序是一个接口程序,2个公司之间的,一个是asp,一个是jsp,我想asp中用
    com的winsock,jsp中servlet的socket,这样可以吗?
       可以,只要使用相同的能信协议.4,如果服务器端用servlet需要用线程编程吗?
        要,一般有多少个点就要动态生成多少个WISOCK.
      

  2.   

    服务器端:
    两个WINSOCK,一个专门侦听,有固定端口号,例如:3000.别一个是WINSOCK数组,参数待设.客户端:
    一个WINSOCK.负责连接服务器.过程:
    当客户机登录时,向服务器端的固定端口(3000)发送一个请求连接,发送格式自定,服务器端收到该信号后,WINSOCK数组动态生成一个WINSOCK,分配一个未占用的端口号,将该端口号发送回申请的客户机,侦听WINSOCK重新置为侦听状态(为下一个客户提供服务),并将新生成的WINSOCK设置为侦听,客户机收到后,将收到的端口设置为WINSOCK的新端口号,并重新与服务器连接.
    该方法可实现一对多功能.类QQ.
      

  3.   

    建议:在通信方面用WinSock的UDP协议!而传文件则用TCP协议!UDP:在发送消息时,在消息上附加上给谁接收的信息!那,服务器就只需一个UDP模式的winsock和一个TCP模式的winsock数组!客户端同时配备两种模式的winsock!一个用于通信~另一个用于收发文件!不过,VB用WinSock传文件的效率实在不敢恭维!不知是代码问题还是有什么限制!以前曾经做过一个在100台机的局域网中监视计算机的东东!可惜在跳槽时代码被网吧老板给删了!
      

  4.   

    传文件方面!最近我又玩着写了一个!http://www.efile.com.cn/?qyii但传送的效率很低!还望高手指教!
      

  5.   

    可以我为什么不行
    java中的serversock没有办法给vb中的winsock发信息,vb中可以给java发
    代码:
    vb
    Private Sub Command1_Click()
            tcpClient.Close
            
            tcpClient.Connect
    End SubPrivate Sub Form_Load()
            tcpClient.RemoteHost = "127.0.0.1"
            tcpClient.RemotePort = 4321
    End SubPrivate Sub tcpClient_Connect()
        tcpClient.SendData Text1.Text
    End Sub
    Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
        Dim abc
        DoEvents
        tcpClient.GetData abc, vbString
        MsgBox abc
    End Sub
    Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
        ' Check if the control's State is closed. If not,
        ' close the connection before accepting the new
        ' connection.
        MsgBox "1"
    End Subjava:
    import java.net.*; 
    import java.io.*; 
    import java.lang.*; public class Test{ 
    public static void main(String args[]){ 
    ServerSocket server; 
    Socket socket; 
    String s; 
    InputStream Is; 
    OutputStream Os; 
    DataInputStream DIS; 
    PrintStream PS; try{ 
    //在端口4321注册服务 
    server=new ServerSocket(4321); 
    socket=server.accept();System.out.println("server ok"); 
    System.out.println("************************************************"); 
    System.out.println(""); //获得对应Socket的输入/输出流 
    Is=socket.getInputStream(); 
    Os=socket.getOutputStream(); 
    //建立数据流 
    DIS=new DataInputStream(Is); 
    PS=new PrintStream(Os); 
    DataInputStream in=new DataInputStream(System.in); 
    while(true){ 
    System.out.println(""); 
    System.out.println("please wait client′s message..."); 
    System.out.println(""); 
    s=DIS.readLine(); //读入从client传来的字符串
    try{ 
    System.out.println("client said:"+s); //打印字符串 
    if(s.trim().equals("BYE"))break; //如果是"BYE",就退出 
    System.out.print("you say:"); 
    s=in.readLine(); //读取用户输入的字符串 
    PS.println(s); //将读取得字符串传给client 
    if(s.trim().equals("BYE"))break; //如果是"BYE",就退出 
    }
    catch(Exception e){
    System.out.println("error!!!" + e.toString());
    }
    } //关闭连接 
    DIS.close(); //关闭数据输入流 
    PS.close(); //关闭数据输出流 
    Is.close(); //关闭输入流 
    Os.close(); //关闭输出流 
    socket.close(); //关闭sockey 

    catch(Exception e){ 
    System.out.println("Error:"+e); 


    } vb中的事件tcpClient_DataArrival怎么也触发不了
      

  6.   

    我又试了一个vb做server的,java做client
    出现问题,
    vb的给client发的东西收不到请问为什么server给client都收不到
      

  7.   

    对不起~JAVA偶没什么认识!你试试看,先用JAVA完成Server and Client!试验成功后,再分别用VB做Server and Client试试!