(在线等待)用delphi和java实现套接字方式的文件传输。(300分)

G

gps

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端用delphi实现,使用ClientSocket控件。
服务器用java实现,使用套接字。
在测试的时候,连接可以建立。但是不能有效的传输数据,在数据传输时有时候能收到数据,有时候不能。
并且就算是收到了数据,数据都是错误的。
delphi程序,java程序各自经过测试都没有问题。
初步怀疑是跨平台的问题。还请各位高手多多指教!
(我很急,请帮帮忙)。
若是分不够,还可以再加
 
各位大哥,救急了。
还请大家不吝赐教
 
用IP通讯不可能有跨平台问题,能写具体点?
 
客户端(delphi):使用TClientSocket。
服务器(java):使用java自己的socket。
测试时,SOCKET连接能够建立。
在客户端使用TClinetSocket的sendtext()发送信息时,服务器端没有响应。此时两端都
没有报错。
在客户端使用sendtext()循环向服务器发送信息,当循环大于10000时,服务器端显示有
数据被接收到,但是数据是错误的。
在客户端使用ReceiveText接收信息时,奇数次能购接收,偶数次不能购接收到。并且接
收到的数据是错误的。
对与接收到错误数据,个人认为是应为java是使用双字节字符集,而delphi是使用单字节
字符集。但是对于传送数据时出现的无响应问题,就不知道是原因了。
to sofox:
我是第一次遇到这么奇怪的问题,因为项目的安排比较紧,还请兄弟多多帮忙。分不购
可以再加。谢谢!


 
怎么还没人回答,
 
个位帮帮忙了。
 
我在用socket是也碰到这个问题
就是奇数此可以接收
而偶数此不能接收

哪位大侠知道,快指导一下吧


 

我在用socket是也碰到这个问题
就是奇数此可以接收
而偶数此不能接收

哪位大侠知道,快指导一下吧

上述问题我也遇到了不知道为什么/
 
我用TIdTCPServer,TIdTCPClient(Delphi6)控件与java的通讯没有出现问题,不过是在局域网内。
>>个人认为是应为java是使用双字节字符集,而delphi是使用单字
>>字符集
那你可以在编译java程序的时候戴上参数
javac xxx.java -encoding iso8859-1
就可以使java程序使用单字符集
 
有心無力,只能幫你提前了;
 
我在用TIdTCPServer做服务器端,eVC做为客户端,收发数据有时就出现楼主的问题,不知道原因是否一样,问题是解决了,就是速度很慢,你可以看看
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1873932
 
是你使用的ClientSocket的代码没有写好问题,
 
如果是字符集不相兼容的问题的话,至少应该能接受到数据吧。
我帮你测试一下吧
等一会给你答复
 
在我的测试中,delphi发送的数据java那边能收到,反过来收不到。
等我把工作做完了在来。
 
怎么还是没有人回应啊。
哎,大哥些能指条明路吗,这样,兄弟也不用走弯路啊
 
来自:swei412, 时间:2003-6-6 10:43:00, ID:1929985
在我的测试中,delphi发送的数据java那边能收到,反过来收不到。
等我把工作做完了在来。


如果dephi的client那边可以发送消息,server可以收到,那就表示没问题了

server 要收到消息才可以回复的
 
我前一段时间给你做过一个Demo,没有问题,一切OK.但是苦于没有找到这个帖子,所以没
有答复你,而demo在我重装系统时删掉了。
你多看看帮助,再参照上面各位的回帖应该没有问题的。
 
我做了一个,没有任何问题!
public class SimpleServerTest {

public SimpleServerTest() {
}

public static void main(String args[]) {
try {
ServerSocket server = new ServerSocket(5000);
System.out.println("Listening for incoming connection...");
Socket s = server.accept();

char[] buf = new char[64];
int charsRead = 0
FileReader fr = new FileReader("serverfile.txt");
OutputStreamWriter ow = new OutputStreamWriter(s.getOutputStream());

while ((charsRead = fr.read(buf)) > -1) {
ow.write(buf, 0, charsRead);
}

ow.close();
fr.close();

} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
 
估计是你的程序写的有问题,我曾用Delphi 连接过unix 的 Socket 服务端,来进行数据传输,没有出现过问题.你可以用delphi 做个serversocket 来测试你的delphi 程序,如果确认clientsocket 没有问题,可以确定问题具体出在什么地方?
 
这真的是很奇怪的问题。
我用delphi来重写客户端和服务器。来测试都没有问题。我用的是非阻塞的方式。我想和这个应该没有多大的关系吧。
我也是第一次遇到这么有意思的问题。
劳烦各位费心了。
 
顶部