linux下java程序和windows下的c#程序socket通信问题,求教

Penguin大阪 2013-08-09 09:48:35
我写个一个c#的socket通信的监控客户端屏幕的程序。
很简单,就是socket连接,然后客户端传输自己截屏图片给服务器端。

现在需求是想在windows下运行c#服务器端程序来监控Linux的计算机。所以我就写了个java版的客户端。代码都类似的。
public void run() {		
//截图大小
Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit()
.getScreenSize());//全屏区域

do {
try {
Robot robot = new Robot();

if(reconnTimes>400)break;
socket = new Socket(ip, port);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//连接上
OutputStream outputStream = socket.getOutputStream();
do {
//开始截图
image = robot.createScreenCapture(rect);
//image放置的内存流
bos.reset();
ImageIO.write(image, "gif", bos);

//System.out.println("send to...");
outputStream.write(bos.toByteArray());
//System.out.println("send over...");
outputStream.flush();
bos.close();
image = null;
Thread.sleep(interval);
//System.out.println("all over..");

} while (true);

} catch (Exception e) {
// TODO Auto-generated catch block
//System.out.println("error:" + e.getMessage());
reconnTimes++;
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while (true);

}


测试结果:
1、打包后的jar文件在windows下java -jar xxx.jar,服务器端软件是可以获取到客户端屏幕。证明java程序是正确的
2、在ubuntu下测试,发现jar程序只发送第一张截图中时,
然后windows下的服务器端程序程序自动关闭了。
我刚开始估计是服务器端软件的接收图片的缓存区设置小了。改大后还是没用,一样结果。
后来我发现window下第一次运行有通信的程序,会跳出一个窗口,是否允许局域网通信。
我想问的是linux下是否会是阻止jar向服务器端发送图片?求教
...全文
124 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
防火墙会禁用端口,关闭防火墙或者设置例外即可

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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