Sockets between D and C(++) app

bearophile bearophileHUGS at lycos.com
Tue Apr 1 17:34:07 PDT 2014


Alexandre L.:

Some comments on your code:

> Here's my 'server' code:
>
> int main(string[] args)
> {

If you don't need args, then I suggest to not put it as main 
argument. So probably this is better (note no int nor return, in 
D they are not needed):

void main() {
...
}


> 		int count = s.receiveFrom(recv_buf);

It's better to use immutable here, and infer the type (use 
const/immutable everywhere you don't really need to mutate a 
variable/argument/field):

		immutable count = s.receiveFrom(recv_buf);


> 		char[] test = cast(char[])recv_buf[0..count-1]; // -1 for C 
> string comp.
>
> 		writefln("Received: %s\n", test);
>
> 		char[] rep = "regan\0".dup;
> 		
> 		s.send(cast(ubyte[])rep);

casts are dangerous, because they silently assume you know what 
you are doing. As first try I suggest you to remove every cast() 
from your D program, and replace them with to!() or other 
functions like toStringz. Sometimes this is not the most 
efficient thing to do, but it's safer, so it's better when you 
start to learn D.

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list