UDP sockets in C

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UDP sockets in C

    Hallo,

    ich komme aus der Java-Ecke und habe keine groflen Erfahrungen in C, was Netzwerkprogrammierung angeht. Wie w¸rde ich folgendes in C/Obj-C f¸r ein Cocoa Programm schreiben?
    Es geht darum, per UDP eine Nachricht an einen Server zu schicken, auf dessen Antwort zu warten und diese dann zB. in der Console darzustellen, hier der genaue Java-Code:

    <pre>
    import java.io.InputStream;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;

    class q3tool {
    public static int queryServer (String msg,byte [] data,String server,Integer port) {

    DatagramSocket ds;
    DatagramPacket dp;
    InetAddress ia;

    try {
    ds = new DatagramSocket();
    } catch ( java.net.SocketException e) {
    System.out.print ("OK, we caught a java.net.SocketException. :'p\n");
    return -1;
    }
    try {
    ia = InetAddress.getByName(server);
    } catch ( java.net.UnknownHostException e) {
    System.out.print ("OK, we caught a java.net.UnknownHostException. :'p\n");
    return -1;
    }
    String out = "xxxx" + msg;
    byte [] buff = out.getBytes();
    buff[0] = (byte)0xff; // oob
    buff[1] = (byte)0xff;
    buff[2] = (byte)0xff;
    buff[3] = (byte)0xff;
    dp = new DatagramPacket(buff, buff.length, ia, port.intValue());
    try {
    ds.send(dp);
    } catch ( java.io.IOException e) {
    System.out.print ("OK, we caught a java.net.java.io.IOException. :'p\n");
    return -1;
    }

    dp = new DatagramPacket(data, data.length);
    try {
    ds.receive(dp);
    } catch ( java.io.IOException e) {
    System.out.print ("OK, we caught a java.net.java.io.IOException. :'p\n");
    return -1;
    }

    return dp.getLength();
    }

    public static void main (String args[]) {
    int length;
    byte [] buff = new byte[65507];
    String host="0.0.0.0"; //Server-IP
    Integer port=new Integer(10000); //Server-Port
    String message = "blablabla\0"


    length=queryServer ("getstatus\0",buff,host,port);
    if (length < 0) return;
    for (int i=4; i < length;i++) {
    System.out.print ((char)buff);
    }
    }

    Ein brauchbarer Link zum Thema C sockets w‰re auch hilfreich. Ich habe auch irgendwo gelesen, dass man irgendwie Java-Klassen von Obj-C aus aufrufen kann. Weifl da jemand genaueres?

    Danke schon mal f¸rs Lesen. :)

    ukq7