当前位置: 技术问答>linux c/c++ IP字符串转换成可比较大小的数字
iis7站长之家
linux下java程序和windows下的c#程序socket通信问题,求教
来源: 互联网 发布时间:2017-04-20
本文导语: 我写个一个c#的socket通信的监控客户端屏幕的程序。 很简单,就是socket连接,然后客户端传输自己截屏图片给服务器端。 现在需求是想在windows下运行c#服务器端程序来监控Linux的计算机。所以我就写了个java版的客户...
我写个一个c#的socket通信的监控客户端屏幕的程序。
很简单,就是socket连接,然后客户端传输自己截屏图片给服务器端。
现在需求是想在windows下运行c#服务器端程序来监控Linux的计算机。所以我就写了个java版的客户端。代码都类似的。
测试结果:
1、打包后的jar文件在windows下java -jar xxx.jar,服务器端软件是可以获取到客户端屏幕。证明java程序是正确的
2、在ubuntu下测试,发现jar程序只发送第一张截图中时,
然后windows下的服务器端程序程序自动关闭了。
我刚开始估计是服务器端软件的接收图片的缓存区设置小了。改大后还是没用,一样结果。
后来我发现window下第一次运行有通信的程序,会跳出一个窗口,是否允许局域网通信。
我想问的是linux下是否会是阻止jar向服务器端发送图片?求教
很简单,就是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向服务器端发送图片?求教
|
防火墙会禁用端口,关闭防火墙或者设置例外即可