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
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