[ C# / Java ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by procedure, 2 Nov 2008.

  1. caban

    caban New Member

    Joined:
    20 Sep 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Народ, есть проблема пишу на C# программу которая отправляет, ICMP Redirect Host сообещние, делаю машину шлюзом, отправляю с неё сообщение на узел, ноль рекации, маршрут не меняется, и arp запросы к новому шлюзу тоже не идут, хотя снифер, говорит что сообщение отправленно, может я что-то в протоколе не понимаю, но rfc прочитал.
    в чем трабл?
    Code:
           public class my_icmp
            {
                public byte Type;
                public byte Code;
                public UInt16 Checksum;
             //   public byte[]  gateway = new byte[4];
                public int MessageSize;
                public byte[] Message = new byte[1024];
                public my_icmp()
                {
                }
    
                public my_icmp(byte[] data, int size)
                {
                    Type = data[20];
                    Code = data[21];
                    Checksum = BitConverter.ToUInt16(data, 22);
                    MessageSize = size - 24;
                    Buffer.BlockCopy(data, 24, Message, 0, MessageSize);
                }
                public byte[] getBytes()
                {
                    byte[] data = new byte[MessageSize + 9];
                    Buffer.BlockCopy(BitConverter.GetBytes(Type), 0, data, 0, 1);
                    Buffer.BlockCopy(BitConverter.GetBytes(Code), 0, data, 1, 1);
                    Buffer.BlockCopy(BitConverter.GetBytes(Checksum), 0, data, 2, 2);
                    Buffer.BlockCopy(Message, 0, data, 4, MessageSize);
                    return data;
                }
                public UInt16 getChecksum()
                {
                    UInt32 chcksm = 0;
                    byte[] data = getBytes();
                    int packetsize = MessageSize + 8;
                    int index = 0;
                    while (index < packetsize)
                    {
                        chcksm += Convert.ToUInt32(BitConverter.ToUInt16(data, index));
                        index += 2;
                    }
                    chcksm = (chcksm >> 16) + (chcksm & 0xffff);
                    chcksm += (chcksm >> 16);
                    return (UInt16)(~chcksm);
                }
    
            }
    
    
            private void main_button_Click(object sender, EventArgs e)
            {
                byte[] data = new byte[1024];
                int recv;
                Socket icmp_mess = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
    
                IPEndPoint iep = new IPEndPoint(IPAddress.Parse(IP_txtbox.Text), 0);
                EndPoint ep = (EndPoint)iep;
                my_icmp packet = new my_icmp();
                packet.Type = 0x05;
                packet.Code = 0x01;
                packet.Checksum = 0;
               /* packet.gateway[0] = 0x0A;
                packet.gateway[1] = 0x0A;
                packet.gateway[2] = 0x10;
                packet.gateway[3] = 0x97;*/
    
                Buffer.BlockCopy(
                BitConverter.GetBytes((short)1), 0, packet.Message, 0, 2);
                Buffer.BlockCopy(
                BitConverter.GetBytes((short)1), 0, packet.Message, 2, 2);
                data = Encoding.ASCII.GetBytes(Data_TxtBox.Text);
                Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length);
    
                packet.Message[0] = 0x0A;
                packet.Message[1] = 0x0A;
                packet.Message[2] = 0x10;
                packet.Message[3] = 0x99;
    
                packet.MessageSize = data.Length + 4;
                int packetsize = packet.MessageSize +4;
                UInt16 chcksum = packet.getChecksum();
                packet.Checksum = chcksum;
    
                icmp_mess.SetSocketOption(SocketOptionLevel.Socket,
                  SocketOptionName.ReceiveTimeout, 3000);
                icmp_mess.SendTo(packet.getBytes(), packetsize, SocketFlags.None, iep);
                //icmp_mess.
                try
                {
                    data = new byte[1024];
                    recv = icmp_mess.ReceiveFrom(data, ref ep);
                }
                catch (SocketException)
                {
                   // Console.WriteLine("No response from remote host");
    
                    Output_edit.Text += "No response from remote host";
    
                    return;
                }
    
                my_icmp  response = new my_icmp(data, recv);
                Output_edit.Text += ep.ToString();
                Output_edit.Text += response.Type;
                Output_edit.Text += response.Code;
                
                int Identifier = BitConverter.ToInt16(response.Message, 0);
                int Sequence = BitConverter.ToInt16(response.Message, 2);
    
    
                Output_edit.Text += Identifier;
                Output_edit.Text += Sequence;
    
                
                string stringData = Encoding.ASCII.GetString(response.Message,
                 4, response.MessageSize - 4);
                Output_edit.Text += stringData;
                
    
                icmp_mess.Close();
    
            }
        }
    
    
     
  2. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    сегодня наткнулся при поиске другого, внимательно не смотрел, но издалека похоже (правда сокеты):
    http://www.example-code.com/vbdotnet/socket_socks_proxy.asp
     
  3. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    Огромная просьба... Кто может переписать на c# ?

    PHP:
    function getCI($url
        { 
         
    $url str_replace("www."""$url); 
         
    $ci_url "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.".$url."/"
         
    $ci_data implode(""file("$ci_url")); 
         
    preg_match("/value=\"(.\d*)\"/"$ci_data$ci);

         if (
    $ci[1] == ""
          return 
    0// Если не смогли определить ТИЦ... 
         
    else 
          return 
    $ci[1]; // Вот оно счастье... 
        
     
  4. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    готово - https://forum.antichat.ru/showpost.php?p=1361989&postcount=30
     
    1 person likes this.
  5. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    [​IMG]


    http://4italka.okis.ru/

    Классный сайт практически только хорошие книги сам прочел большую часть
    книги по программированию на языках Assembler,Delphi,Pascal.DirectX 9.OpenGL,C++,C#,Cи,Java,Visual Basic,Visual Studio.NET,Perl, Хакинг,Win32api
     
  6. SVAROG

    SVAROG Elder - Старейшина

    Joined:
    13 Feb 2007
    Messages:
    424
    Likes Received:
    86
    Reputations:
    -1
    надо проверить хост на валидность, делаю функцией
    DNS.GetHostAddresses("hostname.ru");
    при удачном выполнении функция возвращает ИП, а если такого демена нету то вылетает ошибка программы. Охото что бы в программе определялось существует домен или нет типа если да то 1 если нет то 0.
     
  7. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    перехватывай исключение и возвращай что нужно.
     
  8. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    PHP:
    using System;
    using System.Net;
    using System.Net.Sockets;

    class 
    temp
    {
        private static 
    bool CheckDNS(string host)
        {
            try
            {
                
    Dns.GetHostAddresses(host);
            }
            catch (
    SocketException ex)
            {
                return 
    false;
            }
            return 
    true;
        }

        static 
    void Main()
        {
            
    Console.WriteLine(CheckDNS("sdaasda"));
            
    Console.WriteLine(CheckDNS("ya.ru"));
            
    Console.ReadLine();
        }
    }
     
  9. -[БуШ]-

    -[БуШ]- New Member

    Joined:
    11 Jul 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Вчера взял заказ на написание сетевой проги, узнав что писать нада на Indy - обрадовался, и без замедления принял заказ. Но когда углубился в ТЗ и увидел что использоваться должны компоненты с Indy 10 - подофигел! Стандартные работы с Инди9 тут не подходят - меня это сильно обеспокоило! Прозьба к шарящим людям - помочь!!!
    вот старый сорц работы с Инди9

    procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    begin
    if AThread.Connection.ReadLn=('Msg') then
    ShowMessage('Hello Luser');
    AThread.Connection.Disconnect;
    end;

    код не мой, и на паскале. вопрос вот в чём! Куда пропало AThread: TIdPeerThread и вообще ReadLn и WriteLn ??? Мож кто продемонстрирует как идёт отправка сообщения на Инди10 ?
     
  10. A-Spt_N(o)

    A-Spt_N(o) Elder - Старейшина

    Joined:
    7 Apr 2007
    Messages:
    31
    Likes Received:
    3
    Reputations:
    1
    Народ помогите пожалуйста найти ошибочку в коде... (Java)
    Кину код функции которая должна архивировать данные...

    Code:
    public static void packing(){//File path, String fileName){
    try{
    
    BufferedImage image = ImageIO.read(new File("X:/workspace/Java project/K-RLEArhivator/test/avatar77547.gif"));
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", outputStream);
    byte[] data = outputStream.toByteArray();
    System.out.println(outputStream.size());
    
    FileOutputStream out = new FileOutputStream("file.dat");
    
    int temp = 0;
    
    for(int i = 0; i < data.length; i++){
    temp = i;
    while(data[i] != data[i+1])
    {
    packingData[index] = 00;
    count++;
    i++;
    }
    
    packingData[++index] = (byte) count;
    
    for(int index_c = 0; index_c <= count; index_c++){
    packingData[++index] = data[temp++];
    }
    count = 0;
    temp = i;
    
    while(data[i] == data [i+1]){
    count2++;
    i++;
    }
    
    packingData[index] = (byte) ++count2;
    
    packingData[++index] = data[temp];
    
    
    count2 = 0;
    i++;
    temp = i;
    
    while(data[i] == data[i+1]){
    count2++;
    i++;
    loop = true;
    }
    
    if(loop){
    packingData[++index] = (byte) count2;
    
    packingData[++index] = data[temp];
    count2 = 0;
    loop = false;
    }
    index++;
    }
    
    for(int b = 0; b < packingData.length; b++)
    {
    out.write(packingData[b]);
    }
    
    }
    catch(IOException ioe){
    ioe.printStackTrace();
    }
    Размерность аватарки - 19,725.
    1)Проблема в том что когда я загружаю побайтово данные в массив data получаю размерность массива 3,523.
    2)После запуска программы получаю сл ошибку:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3523
    at Archiver.packing(Class_Main.java:49)
    at Class_Main.main(Class_Main.java:16)
     
    #170 A-Spt_N(o), 19 Jul 2009
    Last edited: 19 Jul 2009
  11. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    A-Spt_N(o)
    в exception'e все написано - что и на какой строчке.
     
  12. bl00m

    bl00m New Member

    Joined:
    16 May 2009
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    допустим на форме 10 кнопок, как сделать, чтобы по нажатию на первую кнопку изменился текст на случайной кнопке?
     
  13. .ATK

    .ATK Active Member

    Joined:
    20 Feb 2009
    Messages:
    143
    Likes Received:
    111
    Reputations:
    9
    первое что приходит в голову - загнать в массив все баттоны - рандомом выбирать один из массива - и свойству текст - присваивать текст!
     
    #173 .ATK, 21 Jul 2009
    Last edited: 21 Jul 2009
    2 people like this.
  14. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    PHP:
    var arr Controls.OfType<Button>().ToArray();
    arr[new Random().Next(arr.Length)].Text "test";
    вот так проще некуда. .NET Framework 3.5 нужен. LINQ
     
  15. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Здрваствуйте, незнаю, втот ли я под форум попал, но у меня проблема такова.
    Скачал Microsoft Visual Studio 8, когда я компилирую исходник, то мне пишет это
    Code:
     1>C:\Program Files\Microsoft Visual Studio 8\VC\include\windows.h(30) : warning C4068: unknown pragma
    1>C:\Program Files\Microsoft Visual Studio 8\VC\include\windows.h(190) : fatal error C1083: Cannot open include file: 'windef.h': No such file or directory
    1>Build log was saved at "file://c:\Documents and Settings\senap\Рабочий стол\programma\Release\BuildLog.htm"
    
    И exe не получается...
     
  16. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    >>Не удается открыть файл : "windef.h ': Нет такого файла или директории
    Найди его самостоятельно, и подружи с компилятором. И будет тебе exe.
    пэ.эс. приду домой напишу как это сделать
     
  17. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    "windef.h" нету его в папке includs
     
  18. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Есть такая проблема:
    Code:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Tester {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		try {
                // The newInstance() call is a work around for some
                // broken Java implementations
    
                Class.forName("com.mysql.jdbc.Driver").newInstance();
            } catch (Exception ex) {
                // handle the error
            	 System.out.println("No class: " + ex.getMessage());
            }
    
    		Connection conn = null;
    		try {
    		    conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","ss88","");
    		    conn.close();
    		} catch (SQLException ex) {
    		    // handle any errors
    		    System.out.println("SQLException: " + ex.getMessage());
    		    System.out.println("SQLState: " + ex.getSQLState());
    		    System.out.println("VendorError: " + ex.getErrorCode());
    		}
    
    	}
    }
    Пытаюсь подключиться к серверу МуСкула и получаю вылетающее исключение
    С чем это может быть связано? Ведь я еще никаких запросов не делал, а сервер мне уже про синтаксис кричит...
     
  19. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Факинг-перефакинг, все здесь работает, если компилить и запускать вручную, исключение вылетает только если запускать на выполнение в eclipse.
    Блин, до чего ненавижу такие баги :(

    Странно то, что под Вендой Эклипс корректно запускает этот код... Хотя сервак один и тот же...
     
    #179 ss88, 2 Aug 2009
    Last edited: 2 Aug 2009
  20. Antikvazar

    Antikvazar New Member

    Joined:
    22 Mar 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    привет всем вобщем я начинающий. мне посоветовали чтобы перехвативать сообщения\события в программах hook и dll inject. тк я новичек начал искать информацию в поисковиках. так вот либо ссылки на форумы где нужно регистрироватся либо написано не на C# либо пример есть но я его даже скомпилировать немогу ошибки какие нибудь все время. в гугле поискал но по английскому сломаю голову переводить никто не подскажет какуюнибудь КНИГУ или хороший ресурс где эти 2 темы НОРМАЛЬНО освещены с примерами или исходниками желательно по русски?
     
Loading...
Similar Threads - Java начинающим задаем
  1. b3
    Replies:
    4
    Views:
    3,163