نمایش نتایج 1 تا 10 از 10

نام تاپیک: نوشتن یک کد

  1. #1

    نوشتن یک کد

    سلام
    دوستان من نیاز دارم یک نفر برام این کد کوچک را بنویسد
    اگر کسی میتونه لطفا کمکم کنه
    باید یک پکت به یک سایت ارسال کنم ساختار پکت ارسالی باید به شکل تصویر زیر باشد
    اما به هیچ عنوان اطلاعای در مورد چگونگی ساخت این پکت وطرز ارسالش ندارم
    اگر میتویند این کد را برام بنویسید یا مشابه آن را بنویسید
    Screenshot (99).png

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: نوشتن یک کد

    متاسفانه در این انجمن (و اکثر انجمن های آموزشی) امکان انجام تمرین و پروژه های درسی و دانشجویی وجود نداره.
    به هر حال این پکیج که احتمالا منظور سوال HTTP هست، به راحتی میتونید با متد POST این بسته رو ارسال کنید. تابع sendPost این آموزش رو ببینید:
    https://www.mkyong.com/java/how-to-s...etpost-in-java

    شما با setRequestProperty هدرها رو مینویسید و در متغیر urlParameters قسمت بدنه رو (البته اگر اندازه ها باید فیکس باشه بایت به بایت رو از رو عددها و... تشکیل بدید)

  3. #3

    نقل قول: نوشتن یک کد

    نه عزیز جان نه کد دانشجویی هست نه آموزشی
    منظور هم ارسال http نیست
    من در ساخت پکت اصلی مشکل دارم وگرنه روش اصلیش را انجام میدادم
    باید به صورت byte array باشه
    لطفا کمک کنید
    خیلی مهمه

  4. #4
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: نوشتن یک کد

    منظور هم ارسال http نیست
    خب اگر http نیست چی هست؟ چون گفتید میخواید به یک سایت ارسال کنید
    دقیقتر توضیح بدید. منظور از "پکت اصلی" و "روش اصلی" چیه؟

    byte array میخواید که فقط این اطلاعات رو داشته باشه؟ اونوقت به چه پروتکلی میخواید ارسال کنید؟

    کلا سوال برای من مبهمه تا جایی که نمیدونم چیزی که میخوایید زو میدونم یا نه
    نمیتونید کل صورت مسئله رو اینجا آپلود کنید؟ (این جدول به تنهایی خیلی کمکی نمیکنه)

  5. #5

    نقل قول: نوشتن یک کد

    والا همین جدول را بیشتر ندارم + یک آی پی + یک پورت
    باید با سوکت بهش وصل بشم و بفرستم
    یک ارتباط دو طرفه هست که من کلاینت هستم

  6. #6
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: نوشتن یک کد

    تو این لینک یک نمونه رو نوشته برای Client و Server:
    https://www.tutorialspoint.com/java/java_networking.htm

    شما کافیه داده هاتون رو در یک آرایه بریزید و اون آرایه رو با out.write که در مثال بالا اومده بفرستید (اونجا نوشته out.writeUTF که شما از اون استفاده نکنید).

    مثلا در این مثال شما 57 بایت داده دارید. 5 تا 4 بایت اول که همگی عدد هستند و اعداد صحیح در جاوا 4 بایتی هستند، پس مشکلی ندارید. سه تا مقدار بعدی چون گفته octet String که منظورش هر کاراکتر یک بایت، کافیه 8 بیت کم ارزش کاراکترهاتون رو ذخیره کنید (برای ASCII همین 8 بیت کم ارزش کافیه ولی برای حروف فارسی و... کافی نیست که طبق سوال مشخصه بقیه رو نمیخواد) و آخریش هم که باز عدده.
    شما کافیه فقط پارامترها رو مقدار دهی کنید. دیگه اینکه هر پارامتر چی رو میخواد بگه رو نمیدونم و بسته به سوالتون هست.

    یک مثال میزنم. فرض کنید من چنین چیزی دارم:
    Length - 4 byte - length of whole package
    USER - 11 byte - octet string of username
    PASS - 13 byte - octet string of password

    از اونجایی که در این مثال اندازه همیشه ثابته، پس Length هم همیشه ثابت خواهد بود و مثلا تو این مثال 28

    اینم یک نمونه کد که ببینی چجوری عددها و رشته ها رو به آرایه های با سایز مشخص تبدیل کنیم. شما کافیه بقیه مقادیرتون رو آماده کنید و به این صورت قرار بدید. در مثال شما length=57 قرار بدید.


    import java.nio.ByteBuffer;
    import java.nio.charset.StandardCharsets;


    public class Main {


    public static void main(String[] args) {
    int length = 28;
    String user = "MyUsername", pass="MyPassword";
    ByteBuffer byteBuffer=ByteBuffer.allocate(length);
    byteBuffer.putInt(length);
    byteBuffer.put(fixedSizeByteArray( user.getBytes( StandardCharsets.US_ASCII ) ,11));
    byteBuffer.put(fixedSizeByteArray( pass.getBytes( StandardCharsets.US_ASCII ) ,13));

    for(int j=0;j<length;j++){
    System.out.print(byteBuffer.get(j)+" ");
    }
    }
    private static byte[] fixedSizeByteArray(byte[] arr,int size){
    byte[] fixedArray=new byte[size];

    for(int i=0;i < arr.length && i<size;i++){
    fixedArray[i]=arr[i];
    }
    return fixedArray;
    }
    }

  7. #7

    نقل قول: نوشتن یک کد

    دستت درد نکنه
    به محض اینکه شد تستش میکنم
    خدا خیرت بده
    ==
    فقط این octet string of username این را من گشتم یک چیزی پیدا کردم ولی نمیدونم چجوری تو این حالت اونا بفرستم
    میتونید اینم راهنماییم کنید؟
    در موردش اینا توضیح داده

    C-Octet String A series of characters terminated with the NULL (0x00) character.
    C-Octet String (Decimal) A decimal numeral character string terminated with the NULL character.
    C-Octet String (Hex) A series of hexadecimal characters terminated with the NULL character.


    خودم اینا براش پیدا کردم
    OctetString AccountName_octetString = new OctetString(AccountName);

    باید اولش اینا بزارید import org.snmp4j.smi.OctetString; ولی تو این حالت نتونستم با byteBuffer.put بفرستمش
    باید با چی بفرستمش؟

  8. #8

    نقل قول: نوشتن یک کد

    قسمت header و body را چجوری باید بفرستم؟باید تفکیک کنم و بفرستم یا همش را تویه یه پاکت بفرستیم؟
    اونی که نوشته reserved را باید خالی بفرستم؟

  9. #9
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: نوشتن یک کد

    باید اولش اینا بزارید import org.snmp4j.smi.OctetString; ولی تو این حالت نتونستم با byteBuffer.put بفرستمش
    خب شما یک کلاس از کتابخانه خارجی استفاده کردید و ByteBuffer هر نوعی رو که ساپورت نمیکنه. میتونی اون رو به یک آرایه تبدیل کنی بعد بفرستی. اگر همچین متدی داره.
    ولی C-Octet اگر منظورش اینه، خب کافیه بعد از آخرین کاراکتر یک 0 قرار بدی. تو این کدی که من نوشتم به صورت پیشفرض تمام خونه هایی که مقدار دهی نمیشن 0 هست پس نیازی به اینکار نیست. مگر اینکه ممکنه مثلا user دقیقا برابر 11 حرف یا بیشتر باشه، و آخرین کاراکتر رو تغییر بده، برای اینکار میتونی هر کدوم یک عدد 0 در اخر بهش اضافه کنی. مثلا متد رو اینجوری تغییر بدی:
    private static byte[] fixedSizeByteArray(byte[] arr,int size){        byte[] fixedArray=new byte[size];

    for(int i=0;i < arr.length && i<size;i++){
    fixedArray[i]=arr[i];
    }
    fixedArray[size-1]=0;
    return fixedArray;
    }

    در این حالت ماکزیمم مقدار برای username تعداد 10 کاراکتر و password تعداد 12 کاراکتر خواهد بود. تصور من اینه دیگه نمیدونم منظورش دقیقا چی بوده.

    قسمت header و body را چجوری باید بفرستم؟باید تفکیک کنم و بفرستم یا همش را تویه یه پاکت بفرستیم؟
    اینم بستگی به خودت داره. من که میگم یه جا بفرست. وقتی اندازه هر پارامتر مشخصه، مشکلی پیش نمیاد. ولی بازم هر جور بگی میشه تصور کرد، بلاخره این چیزیه که باید بگن یا به اختیار خودت بذارن.

    اونی که نوشته reserved را باید خالی بفرستم؟
    به احتمال زیاد. به هر حال از رو این جدول نمیشه هیچی رو با قطعیت گفت. بلاخره همش میشه فرضیات خودت وقتی صورت مسئله مشخص نباشه.

  10. #10

    نقل قول: نوشتن یک کد

    خیلی ممنون
    خیلی کمک کردی منم تقریبا به همچین کدی رسیده بودم ولی شک داشتم
    حالا باید برم وقت بزارم و رویه ریز کاری هاش تست کنم
    متاسفانه تا چند روز دیگه امکان تست برام وجود نداره
    به محض اینکه دسترسیم را باز کردند تست میکنم و اگر مشکلی بود ازتون میپرسم
    دستتون درد نکنه

تاپیک های مشابه

  1. سوال: نوشتن یک کد و استفاده از آن در تمام اجزای برنامه
    نوشته شده توسط bugattis در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: شنبه 18 مهر 1388, 19:03 عصر
  2. کمک در نوشتن یک کد ساده
    نوشته شده توسط emami.sie در بخش Access
    پاسخ: 3
    آخرین پست: شنبه 06 تیر 1388, 21:53 عصر
  3. کمک در رمينه نوشتن يک کد
    نوشته شده توسط flower sam در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 19 اردیبهشت 1388, 16:08 عصر
  4. کمک در نوشتن يک کد برنامه
    نوشته شده توسط flower sam در بخش C#‎‎
    پاسخ: 8
    آخرین پست: شنبه 29 فروردین 1388, 07:11 صبح
  5. سوال: محل مناسب نوشتن يك كد براي انجام كاري قبل از عمل post در DBNavigator ؟
    نوشته شده توسط oghab در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: چهارشنبه 08 خرداد 1387, 18:18 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •