2012-12-13 35 views
0

我目前有一个Java服务器thingy的问题。Java套接字:写入客户端不工作

这是一个简单的TCP服务器发送图像。问题是,我没有客户端程序的代码...此外,似乎没有办法检查写入事件的客户端套接字以及已发送到客户端的数据量。

有人有什么想法可以防止客户端正确地获取图像?

这里是我的代码:

byte[] response = process (cmd); 

if (response == null) 
{ 
    controlSock.close(); 
    dataSock.close(); 
    stop = true; 
} 
else if (dataSock != null) 
{ 
    dos.write(response); 
    dos.flush(); 
} 

顺便说一句,服务器工作正常与远程登录。

+4

信息不足。协议是什么?有没有Stacktraces,Errorlogs?你能说出客户吗?你会得到IOExceptions吗? ... – Fildor

+0

协议是TCP(和自制命令列表)。不,没有明显的错误,而且是由学生写的客户端。我知道这不是很多的信息,但似乎都在工作。只是图像不被客户接收。我想检查一下发送了多少数据......这可能吗? – Aleks

+0

你对哪些部件有影响?你有服务器代码,我猜你没有客户端代码。你知道应用协议。你可以改变协议或增加它吗? – Fildor

回答

2

如果服务器在telnet下工作正常,那么你的服务器没问题。

问题更可能出现在客户所做的假设与您的假设不一样。例如,客户端可能会认为您首先以大或小的endian格式发送大小(作为int,short或long)。也许它也以某种格式预期文件/图像的名称。

要知道这一点的唯一方法是读取客户端的代码或询问知道客户端假设的人。

+0

增加:如果在服务器端'write'和'flush'正在执行而没有任何异常,你必须考虑所有的“响应”字节已被写入。 – Fildor

+0

esp如果您在使用telnet时看到它们 –