com组件之间数据传输问题,高手进!感谢提供思路,分不够再加,up有分

sparkcn 2004-03-16 06:18:44
我想做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,不过,服务器端不能给客户端返回值
...全文
30 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sparkcn 2004-03-17
  • 打赏
  • 举报
回复
up
haorjiang 2004-03-17
  • 打赏
  • 举报
回复
up
sparkcn 2004-03-17
  • 打赏
  • 举报
回复
我又试了一个vb做server的,java做client
出现问题,
vb的给client发的东西收不到

请问为什么server给client都收不到
sparkcn 2004-03-17
  • 打赏
  • 举报
回复
可以我为什么不行
java中的serversock没有办法给vb中的winsock发信息,vb中可以给java发
代码:
vb
Private Sub Command1_Click()
tcpClient.Close

tcpClient.Connect
End Sub

Private Sub Form_Load()
tcpClient.RemoteHost = "127.0.0.1"
tcpClient.RemotePort = 4321
End Sub

Private 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 Sub

java:
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怎么也触发不了
qyii 2004-03-17
  • 打赏
  • 举报
回复
噢~灌个水!终于多了个三角了~呵呵
qyii 2004-03-17
  • 打赏
  • 举报
回复
对不起~JAVA偶没什么认识!

你试试看,先用JAVA完成Server and Client!试验成功后,再分别用VB做Server and Client试试!
qyii 2004-03-17
  • 打赏
  • 举报
回复
传文件方面!最近我又玩着写了一个!

http://www.efile.com.cn/?qyii

但传送的效率很低!还望高手指教!
qyii 2004-03-17
  • 打赏
  • 举报
回复
建议:在通信方面用WinSock的UDP协议!而传文件则用TCP协议!

UDP:在发送消息时,在消息上附加上给谁接收的信息!那,服务器就只需一个UDP模式的winsock和一个TCP模式的winsock数组!客户端同时配备两种模式的winsock!一个用于通信~另一个用于收发文件!

不过,VB用WinSock传文件的效率实在不敢恭维!不知是代码问题还是有什么限制!

以前曾经做过一个在100台机的局域网中监视计算机的东东!可惜在跳槽时代码被网吧老板给删了!
goodmanh 2004-03-17
  • 打赏
  • 举报
回复
学习!
华芸智森 2004-03-16
  • 打赏
  • 举报
回复
服务器端:
两个WINSOCK,一个专门侦听,有固定端口号,例如:3000.别一个是WINSOCK数组,参数待设.

客户端:
一个WINSOCK.负责连接服务器.

过程:
当客户机登录时,向服务器端的固定端口(3000)发送一个请求连接,发送格式自定,服务器端收到该信号后,WINSOCK数组动态生成一个WINSOCK,分配一个未占用的端口号,将该端口号发送回申请的客户机,侦听WINSOCK重新置为侦听状态(为下一个客户提供服务),并将新生成的WINSOCK设置为侦听,客户机收到后,将收到的端口设置为WINSOCK的新端口号,并重新与服务器连接.
该方法可实现一对多功能.类QQ.
华芸智森 2004-03-16
  • 打赏
  • 举报
回复
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.


Cnwanglin 2004-03-16
  • 打赏
  • 举报
回复
C/S的基本模型
有很多资料的
你自己找找吧
兄弟你大三吧
sparkcn 2004-03-16
  • 打赏
  • 举报
回复
自己顶

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧