PDA

View Full Version : کار با سوکت در JBuilder++یا Visual j++ 6(برنامه نویسی شبکه)



arshia_
پنج شنبه 07 اسفند 1382, 23:23 عصر
سلام
من می خوام برنامه ای بنویسم که شامل یک کلاینت و یک سرور باشد.
و برنامه کلاینت بتواند desktop کامپیوتر را برای برنامه سرور ارسال کند و برنامه سرور بتواند از طریق شبکه بروی کامپیوتر کلاینت نظارت داشته باشد...
در صورت امکان توابع و کلاسهای لازم را ذکر فرمایید و اگر منبعی برای مطالعه بیشتر(انگلیسی یا فارسی) سراغ دارید معرفی فرمایید....
با تشکر از دوستان

shaniaki
جمعه 08 اسفند 1382, 13:31 عصر
با عرض ادب:
بعید می دانم java گزینه خوبی برای این کار باشد. هم به دلیل سرعت و هم به دلیل اینکه به علت غیر وابسته بودن java به سیستم عاملی که آنرا اجرا می کند ممکن است JVM راه استانداردی برای دسترسی شما به مثلا desktop ویندوز یا X در linux ندهد. به نظر من بهتر است اینگونه کارها به شکل native همان سیستم عامل پیاده سازی شوند.
برای کار با شبکه اگر می خواهید low level کار کنید کلاس های استاندارد خود java مانند java.net.Socket موجود هست.

یه عشق برنامه نویسی خفن

marjan_h
یک شنبه 10 اسفند 1382, 10:54 صبح
در مورد این کار از دلفی استفاده بشه چطوره؟ راحت تر است ؟

arshia_
یک شنبه 10 اسفند 1382, 10:58 صبح
ممنون از جواب
اما من مجبورم با جاوا اینکار رو انجام بدم
ولی فقط برای ویندوز 98 یا ان تی
:flower:

omid_ah61
پنج شنبه 22 مرداد 1383, 14:06 عصر
دوست عزیز جاوا اصلاً گزینه خوبی برای این کار نیست ولی در عوض شما میتوانید به پیشنهاد من عمل کنید شاید بد نباشه :
ابتدا سوکت رو با زبان دیگری مانند c بنویسید سپس به برنامه جاوا لینک کنید که هم سرعت بیشتری داره و هم از جاوا استفاده کردید :flower:

vip_on_the_web
شنبه 31 مرداد 1383, 00:43 صبح
dooste aziz salaam

shak nadaashte baash ke java bar rooye shabake ghavi tarin zabaane donyaast
pas dar ghasmate shabake een barnaame hich moshkeli nakhahi daasht
baraaye ghesmate shabake mitooni dar laayeye 3 shabake kaar koni baa classhaaee mesle java.net.ServerSocket , java.net.Socket va yaa az apiye nio estefaade koni, vali agar ham mikhaay too laayeye baalaa tar een kaaro anjaam bedi baaz ham java een ejaaza ro be shomaa mide

man tosiye mikonam ghabl az anjaame een barnaame ye kami dar morede sockethaa motaalele koni va ye barnaameye kochik chat ham benevisi

baraaye desktop ham java fekresho karde
mitooni az classe java.awt.Robot estefaade koni
baa estefaade az een class mitooni az desktop aks begiri, mahale cursure mouse ro taghir bedi, hataa mitooni be jaaye keyboard az oon estefaade koni
az lahaaze sorat ham java hich moshkeli nadaare, baaraaye fahmidane een matlab mitooni algorithmhaaye piyaade shode dar java.math.BigDecimal ro baa moadele zabaane c ye oon moghayese koni, be gofteye sun moadele javaye een algorithm haa 5 baraabar sarie tar az moadele c ye oonaa kaar mikone(albate rooye hotspot) vali ye moshkeli baaghi mimoone va oonam sorate shabake hast

ye akse bozorg be andaazeye desktop hadeaghal ye chizi hodoode 200K hajm daare
age barnaame rooye lan run beshe ehtemaalan moshkele ziyaadi nadaare vali age barnaame rooye internet ejraa beshe kheyli moshkel daare , be hamin khaater majboori ye jooraaee hajme aks ro kam koni, mitooni resolution oono kam koni yaa colordepth ro yaa har joftesho,va dar nahaayat oono feshorde koni, be har haal anjaame een kaar baa apiye java2d kheyli kaare sakhti nist

golnari
شنبه 31 مرداد 1383, 07:24 صبح
سلام
در قسمت شبکه شما می توانید از java.net.socket , java.rmi استفاده کنید و برای کار با شبکه بسیار قوی و سریع هستند.
ولی فکر می کنم برای دسترسی به desktop مشکل خواهی داشت چون java اجازه دسترسی به خارج از حافظه مجازی را نمی دهد
پیشنهاد :
- راه اول مشکل ولی بهتر : برای کارهای محلی از native جاوا استفاده کن (شما می توانید در برنامه های جاوا برنامه های زبان C را لود کنید)
- راه دوم : کل کارهای کنترل کلاینت و ارسال desktop رو با C یا با دلفی بنویس و سمت سرور با جاوا برنامه ای برای کنترل ان بنویس و با socket این دو را به هم متصل کن

vip_on_the_web
یک شنبه 01 شهریور 1383, 00:12 صبح
دوستان سلام
من نحوه دسترسی به desktop رو توزیح دادم . این کار با استفاده از کلاس java.awt.Robot به راحتی انجام میشه و شما نیازی به زبان دیگری ندارید.

از دوستان جاوادان خواهش میکنم اینقدر جاوا رو دست کم نگیرند !

golnari
چهارشنبه 04 شهریور 1383, 07:25 صبح
سلام vip_on_the_web عزیز
من برنامه نمونه جاوا رو برای تعیین GraphicsDevice تست کردم ولی جواب نداد آیا شما تا بحال با این کلاس کرده اید(Robot با یک GraphicsDevice کار می کند) . اینم برنامه:

import java.awt.*;
import javax.swing.*;
public class TestGraph{
public static void main(String args[]){
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
GraphicsDevice gd = gs[j];
GraphicsConfiguration[] gc =
gd.getConfigurations();
for (int i=0; i < gc.length; i++) {
JFrame f = new
JFrame(gs[j].getDefaultConfiguration());
Canvas c = new Canvas(gc[i]);
Rectangle gcBounds = gc[i].getBounds();
int xoffs = gcBounds.x;
int yoffs = gcBounds.y;
f.getContentPane().add(c);
f.setLocation((i*50), (i*60));
f.show();
}
}

}
}

vip_on_the_web
پنج شنبه 05 شهریور 1383, 00:31 صبح
سلام دوست عزیز
این کد رو همین حالا نوشتم و امتحان هم کردم . سعی کردم در حد امکان کوتاه باشه ولی درست کار میکنه و یه تصویر از مونیتور رو توی فایل c:\screen.jpg قرار میده .


/*
* Created on Jul 8, 2004
*/
package temp;

import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
* @author <a href="mailto:vip_on_the_web@yahoo.com">Mohsen</a>
*/
public class RobotTest {

public static void main(String[] args) throws Exception {
Robot robot = new Robot(GraphicsEnvironment.getLocalGraphicsEnvironm ent().getDefaultScreenDevice());

Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage image = robot.createScreenCapture(new Rectangle(0, 0, size.width, size.height));

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(new FileOutputStream("c:/screen.jpg"));
encoder.encode(image);
}
}

golnari
شنبه 07 شهریور 1383, 07:42 صبح
vip_on_the_web عزیز متشکرم بسیار مفید بود :flower: